我目前有大量的多线程服务器应用程序,我正在四处寻找一个好的多线程内存分配器.
到目前为止,我被撕裂了:
从我发现的囤积可能是最快的,但我在今天之前没有听说过,所以我怀疑它是否真的像它看起来那么好.任何人都有尝试这些分配器的个人经验?
我理解它的方式,存在许多不同的malloc实现:
有没有办法确定我的(linux)系统上实际使用了哪个malloc?
我读到"由于ptmalloc2的线程支持,它成为了linux的默认内存分配器." 我有什么方法可以自己检查一下吗?
我问,因为我似乎没有通过在下面的代码中对malloc循环进行并列化来加快速度:
for (int i = 1; i <= 16; i += 1 ) {
parallelMalloc(i);
}
void parallelMalloc(int parallelism, int mallocCnt = 10000000) {
omp_set_num_threads(parallelism);
std::vector<char*> ptrStore(mallocCnt);
boost::posix_time::ptime t1 = boost::posix_time::microsec_clock::local_time();
#pragma omp parallel for
for (int i = 0; i < mallocCnt; i++) {
ptrStore[i] = ((char*)malloc(100 * sizeof(char)));
}
boost::posix_time::ptime t2 = boost::posix_time::microsec_clock::local_time();
#pragma omp parallel for
for (int …Run Code Online (Sandbox Code Playgroud)