【发布时间】:2017-11-22 00:30:14
【问题描述】:
我的推理是,如果 tcmalloc 维护一个每个线程的空闲列表,从该列表下可以满足动态分配,那么 tcmalloc 在平均情况下的性能应该非常接近堆栈分配(调整池大小的成本是在许多操作中摊销)。
这在实际操作中是否成立?有没有我没有想到的退化案例?
【问题讨论】:
-
堆栈的一个重要好处是它可能位于 CPU 缓存中,并且位于打开的页面上。 (DDR RAM,尽管它的名字,实际上并不是完全随机访问。它具有真实的引用局部性)
-
如果你想使用栈分配,试试alloca。记住不要释放指针。
-
我想获得动态内存更长的对象生命周期的好处。如果线程池在后台管理,那么这将非常方便。听起来确实好得令人难以置信。
标签: c++ performance memory-management low-latency tcmalloc