为什么Ubuntu的内存分配器的速度比google tcmalloc慢2倍?

问题描述:

基准这里:为什么Ubuntu的内存分配器的速度比google tcmalloc慢2倍?

On the use and abuse of alloca

我假设同样适用于其它UNIX系统中,当谷歌perftools存在,并且它是2倍(多一点),比标准的分配速度更快,那么为什么分布仍以出货次优的?请记住,tcmalloc已经有5年以上的历史了。

+0

tcmalloc的基准在哪里?该链接将malloc与alloca进行比较。显然堆栈分配将比堆快。 tcmalloc甚至没有在链接中提及。 – 2011-04-28 15:46:14

+0

你知道,说“perftools = tcmalloc”就足够了。谷歌的tcmalloc页面只有一个引用perftools作为头文件。这并不明显。 – 2011-04-28 16:21:25

+0

好吧,我想你给了我的“-1”,这是一个有点侵略性,如果我的问题留下来的部分出来,这是因为它的意思是人们至少知道的主题... – 2011-04-28 16:44:37

很少有东西比其他东西简单“快两倍”。 90%的时间可能快两倍,10%的时间慢10倍。对于一个通用的系统分配器,你需要一直做得相当好的事情,而不是非常擅长的情况。这可能就是为什么默认分配器不是tcmalloc - 它至少需要确定一切,而不是超级专业。

+0

这是我的假设,但如果你看看tcmalloc实现规范,这是相当普遍的目的,从单线程到多线程,唯一的折衷,我可以看到空间开销。 – 2011-04-28 15:35:08

+3

我发现的文档显示它默认分配6MB的内存。也许对于一个浏览器来说并不多,但对于像'ls'或'cat'这样的程序来说,这是一个可怕的开销! – 2011-04-28 15:48:14

+1

这是一个很好的观点。 – 2011-04-28 16:39:07