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.