TBB3.0 scalable_allocator vs. TCMalloc

Intel TBB 3.0 の exampels を見ていると、scalable_allocator と stdmalloc の性能比較ができるサンプル (exmaples/task/tree_sum) があったので、ついでに Google 謹製 tcmalloc とも比較してみた。
比較に使った PC のスペックは CPU: Core i5 750@2.67GHz、メモリ: 2GB、gcc: 4.4.3。


5回の平均は以下の通り。

// TBB3.0 scalable_allocator
Tree creation using TBB scalable allocator
   half created serially: time = 173.4 msec
   half done in parallel: time = 45.7 msec
Calculations:
           SerialSumTree: time = 46.4 msec, sum=7.01275e+08
   SimpleParallelSumTree: time = 14.2 msec, sum=7.01275e+08
OptimizedParallelSumTree: time = 12.8 msec, sum=7.01275e+08
// TCMalloc
Tree creation using standard operator new
   half created serially: time = 225.0 msec
   half done in parallel: time = 165.7 msec
Calculations:
           SerialSumTree: time = 64.4 msec, sum=7.01275e+08
   SimpleParallelSumTree: time = 20.1 msec, sum=7.01275e+08
OptimizedParallelSumTree: time = 19.7 msec, sum=7.01275e+08
// std::malloc
Tree creation using TBB scalable allocator
   half created serially: time = 304.1 msec
   half done in parallel: time = 265.7 msec
Calculations:
           SerialSumTree: time = 48.1 msec, sum=7.01275e+08
   SimpleParallelSumTree: time = 16.5 msec, sum=7.01275e+08
OptimizedParallelSumTree: time = 15.5 msec, sum=7.01275e+08

結果を表にまとめるとこんな感じ。

scalable_allocator TCMalloc std::malloc
Tree creation (serial) 1.00
(173.4 ms)
1.30
(225.0 ms)
1.75
(304.1 ms)
Tree creation (parallel) 1.00
(45.7 ms)
3.63
(165.7 ms)
5.81
(265.7 ms)
SerialSumTree 1.00
(46.4 ms)
1.39
(64.4 ms)
1.04
(48.1 ms)
SimpleParallelSumTree 1.00
(14.2 ms)
1.42
(20.1 ms)
1.16
(16.5 ms)
OptimizedParallelSumTree 1.00
(12.8 ms)
1.54
(19.7 ms)
1.21
(15.5 ms)

ライブラリ自体が scalable_allocator を前提としているからか、scalable_allocator が一番高速という結果になった。
TCMalloc も std::malloc と比べればかなり健闘しているが、それでも scalable_allocator には及ばなかった。

この結果を見る限り、TBB3.0 を使うのであれば、そのまま scalable_allocator を使うのが無難な選択と言えるかな。


Intel が出してる論文にもっと詳しい比較が載っているので、気になる方はどうぞ。
http://download.intel.com/technology/itj/2007/v11i4/5-foundations/5-Foundations_for_Scalable_Multi-core_Software.pdf