This swaps out the old allocator for one that's a bit more efficient. This allocator does a few things differently than the old one:
Each allocator is now kept separately to make it easier to allocate with locality for a given level. This also makes it easier to drop a level.
Each level remembers where to look for the next free space in each page
Each level can efficiently drop pages
The new allocator has an optional DEBUG_ZEROING flag to help with catching out bad allocation lifetimes in the unit tests (similar to the old allocator)
A quick test reveals that this allocator, in a hot loop of allocating and freeing a block of memory, is roughly 2x faster than system malloc/free. Though this is just one benchmark.
This swaps out the old allocator for one that's a bit more efficient. This allocator does a few things differently than the old one:
The new allocator has an optional DEBUG_ZEROING flag to help with catching out bad allocation lifetimes in the unit tests (similar to the old allocator)
A quick test reveals that this allocator, in a hot loop of allocating and freeing a block of memory, is roughly 2x faster than system malloc/free. Though this is just one benchmark.