最近測試了一下boost執行緒池,向大家公布一下測試結果,本測試在單執行緒環境下進行,
boost::pool實用單執行緒記憶體方法
boost::singleton_pool適用多執行緒記憶體訪問
測試**如下
struct student
;void heapallocate()
for (int j=0;j<1000;j++)
}}void boostallocate()
for (int j=0;j<1000;j++)
}}typedef struct singleton_pool_tag
singleton_pool_tag;
typedef boost::singleton_poolglobal;
void boostsingletonallocate()
for (int j=0;j<1000;j++)
}}
其中更改name陣列的大小來設定分配單元大小
分配單元大小
普通堆分配用時
boost::pool用時
boost::singleton_pool用時
8位元組2620 milli seconds
1420 milli seconds
4493 milli seconds
分配單元大小
普通堆分配用時
boost::pool用時
boost::singleton_pool用時
128位元組
2871 milli seconds
1419 milli seconds
4508 milli seconds
分配單元大小
普通堆分配用時
boost::pool用時
boost::singleton_pool用時
256位元組
3136 milli seconds
1419 milli seconds
4509 milli seconds
1k4306 milli seconds
1435 milli seconds
4539 milli seconds
2k9048 milli seconds
1451 milli seconds
4555milli seconds
分配單元大小
普通堆分配用時
boost::pool用時
boost::singleton_pool用時
4k20671 milli seconds
1779 milli seconds
4930 milli seconds
分配單元大小
普通堆分配用時
boost::pool用時
boost::singleton_pool用時
8k20671 milli seconds
1779 milli seconds
4930 milli seconds
有以上資料分析出,boost::pool效能始終最優(因其無鎖),當分配單元小於1k時,boost::
singleton_pool效能甚至比不過正常的記憶體分配,當分配單元大於1k時,
boost::singleton_pool的優勢才會逐漸顯示
ps, 今天在自己的機器上又測試了一下,臨界值變為2k,faint!
boost 記憶體池
1.什麼是記憶體池 池 是在計算機技術中經常使用的一種設計模式,其內涵在於 將程式中需要經常使用的核心資源先申請出來,放到乙個池內,由程式自己管理,這樣可以提高資源的使用效率,也可以保證本程式占有的資源數量。經常使用的池技術包括記憶體池 執行緒池和連線池等,其中尤以記憶體池和執行緒池使用最多。記憶體...
boost庫記憶體池使用
記憶體池 memory pool 是一種記憶體分配方式。通常我們習慣直接使用new malloc等api申請分配記憶體,這樣做的缺點在於 由於所申請記憶體塊的大小不定,當頻繁使用時會造成大量的記憶體碎片並進而降低效能。記憶體池則是在真正使用記憶體之前,先申請分配一定數量的 大小相等 一般情況下 的記...
boost的pool記憶體池
參考 boost程式庫開發完全指南 pool func eg.h pragma once include includeusing namespace boost void eg void eg object pool void eg construct void eg singleton pool...