我目前有大量的多线程服务器应用程序,我正在四处寻找一个好的多线程内存分配器。
到目前为止,我很纠结:
- 孙的梅姆
- 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/