測試boost記憶體池

2021-06-18 08:03:43 字數 1696 閱讀 8663

最近測試了一下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...