2014-09-27 75 views
0

如果我的應用程序動態分配和釋放內存很多次,每次對於相同大小的對象;將malloc和free分配給緩存以提高性能是否有意義?或者做mallocs的實現已經這樣做?緩存malloc性能改進

+2

您正在討論*內存池*。 'malloc'已經實現了一個引擎蓋。可以編寫自己的專門用於特定用例的更好的工作,但除非您知道自己在做什麼,否則最好依靠默認設置。你有沒有分析你的代碼,以確定這是一個問題? – 2014-09-27 14:11:23

+0

@OliverCharlesworth還沒有,我在訪問我正在使用的集羣時遇到了一些問題,我必須等待。順便說一句,我想先弄清楚是什麼問題。我分配了數百萬的描述符,其平均壽命爲2.5 us。但平均而言,應保持10000個池的工作。我正在考慮它的價值是否因爲已經實施而無用。 – Otrebor 2014-09-27 14:17:46

+0

在開始討論內存如何分配之前,儘量避免內存分配通常是一個好主意。 – tmyklebu 2014-09-27 15:23:00

回答

0

可以爲你做的boost::pool類。

另一個更快更簡單的方法是使用TBB(tbbmalloc)或Google malloc(tcmalloc)中的替代malloc庫。兩者都比默認的malloc快得多,只需要鏈接一個庫,因此需要更改代碼。

我使用了tbbmalloc,並在幾個應用程序上獲得了大量的2倍提升。