2011-04-28 99 views
1

基準這裏:爲什麼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

回答

4

很少有東西比其他東西簡單「快兩倍」。 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

相關問題