Run the profiler, turns out POOL_HEAP::GetBlock() was taking up 99% of the processing time, so try and speed that up.