相关疑难解决方法(0)

用于C/C++的多线程内存分配器

我目前有大量的多线程服务器应用程序,我正在四处寻找一个好的多线程内存分配器.

到目前为止,我被撕裂了:

  • 太阳的呃
  • 谷歌的tcmalloc
  • 英特尔的线程构建块分配器
  • Emery Berger的囤积

从我发现的囤积可能是最快的,但我在今天之前没有听说过,所以我怀疑它是否真的像它看起来那么好.任何人都有尝试这些分配器的个人经验?

c c++ memory malloc allocation

35
推荐指数
3
解决办法
1万
查看次数

如何知道使用哪个malloc?

我理解它的方式,存在许多不同的malloc实现:

  • dlmalloc - 通用分配器
  • ptmalloc2 - glibc
  • jemalloc - FreeBSD和Firefox
  • tcmalloc - 谷歌
  • libumem - Solaris

有没有办法确定我的(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)

c++ heap malloc

7
推荐指数
1
解决办法
318
查看次数

标签 统计

c++ ×2

malloc ×2

allocation ×1

c ×1

heap ×1

memory ×1