Many heap managers aren't designed for Multi-Core Processors.
They were designed for single-processor environments, and allow only one thread at a time to be active in the heap. On systems powered by a CPU with a single core this is not a problem, since only one thread executes at any given time. But on multi-core processor systems where multiple threads make concurrent heap requests, all but one will be blocked by the heap manager, effectively nullifying the benefit of the extra cores. Heap contention can actually make your app run slower on two cores than on one. To make matters worse, each time a thread is blocked, it loses its time slice and causes an immediate (and very expensive) OS context switch that chews up otherwise useful cycles. Adding processors increases the number of concurrent threads, thus increasing the likelihood of heap blocking and the consequential context switches The result: extra cores can actually cause a vicious cycle of OS context switching overhead to slow your app's overall performance to below single processor levels.
This performance-numbing problem can occur on any app that has two or more threads calling the heap, regardless of heap size or time spent in heap operations. So nearly every app is vulnerable.
SmartHeap for Multi-Core eliminates heap contention so your app scales
with additional cores.
Unlike compiler heap managers, SmartHeap for Multi-Core allows multiple threads to proceed with no blocking and true concurrency, eliminating heap contention and associated OS overhead. The result: with SmartHeap for Multi-Core your app will scale when it is run on a multi-core machine.
You don't have to change your code.
SmartHeap for Multi-Core can improve your app's performance without requiring any modifications to your code. You don't have to use special APIs or reconfigure your app to call multiple pools. You simply relink with SmartHeap and your code continues to call generic malloc or operator new.
SmartHeap for will even speed up your app on CPUs with a single core.
SmartHeap for Multi-Core will work just fine on a single core too. In fact, as our benchmarks show, it is substantially faster than the compiler supplied libraries in such environments. So you can ship one .exe that works well regardless of the machines your customers run on.