|
|
|
|
|
by filthydumbidiot
3934 days ago
|
|
Note also that the real cost of the pool allocation is up front in the "Pool construction" field. At 368ms in this benchmark, it takes even longer than all of the heap allocations! With pools, you pay an up-front cost for the faster allocation later. So a better way to arrange the benchmark would be showing off frequent pool creation and deletion of objects. |
|
It really depends on how heap allocation is implemented, so it's hard to compare. By using memory pools, you can allocate a huge block of memory at once from the OS (a small initial cost), and lazily initialize the values. Which brings you: 1. Cache locality. 2. A lot less fragmentation.
I'd rank it as:
1. Stack allocation (essentially free)
2. Memory pool (a small hit every once in a while)
3. Heap allocation (significant overhead compared to the other ones)