c++ - C/C++ 的多线程内存分配器

标签 c++ c memory malloc allocation

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

到目前为止,我很纠结:

  • 孙的梅姆
  • Google 的 tcmalloc
  • 英特尔的线程构建 block 分配器
  • 埃默里·伯杰的宝藏

根据我的发现,hoard 可能是最快的,但我在今天之前没有听说过它,所以我怀疑它是否真的像看起来那么好。任何人都有尝试这些分配器的亲身经历吗?

最佳答案

我使用过 tcmalloc 并阅读了有关 Hoard 的信息。两者都有类似的实现,并且都在线程/CPU 数量方面实现了大致线性的性能扩展(根据各自站点上的图表)。

所以:如果性能真的那么重要,那么就进行性能/负载测试。否则,只需掷骰子并选择列出的一个(根据目标平台上的易用性加权)。

来自 trshiv's link ,看起来 Hoard、tcmalloc 和 ptmalloc 在速度上都大致相当。总体而言,tt 看起来 ptmalloc 优化为尽可能少占用空间,Hoard 优化为权衡速度 + 内存使用,而 tcmalloc 优化为纯速度。

关于c++ - C/C++ 的多线程内存分配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/147298/

相关文章:

c++ - 如何从 g++ 链接到 VS2008 生成的 .libs

c - C语言中的字符串引用

java - Java 中的内存效率

c - 用 C 编写一个程序,打印两个输入整数的和、积和商

c - 为什么显示函数被调用两次?

javascript - Spidermonkey:如何删除全局对象

c# - 固定缓存的哈希表大小

c++ - 为什么我需要转换算法 remove() 的参数?

c++ - unique_ptr、make_unique 和多态性

c++ - 标题中的数组