What kind of applications will Hoard speed up?
Hoard will always improve the performance of multithreaded programs running on multiprocessors that make frequent use of the heap (calls to malloc/free or new/delete, as well as many STL functions). Because Hoard avoids false sharing, Hoard also speeds up programs that only occasionally call heap functions but access these objects frequently.
I'm using the STL but not seeing any performance improvement. Why not?
In order to benefit from Hoard, you have to tell STL to use malloc instead of its internal custom memory allocator:
The first form works for most platforms using g++, while the second form is for Visual Studio (Windows).
typedef list<int, malloc_alloc> mylist;
typedef list<int, std::allocator<int> > mylist;
The first form works for most platforms using g++, while the second form is for Visual Studio (Windows).
What systems does Hoard work on?
Hoard is fully supported for the following platforms.
Hoard also runs on PowerPC systems (including IBM Power and Macs running Apple OS X).
- Windows NT/2000/XP/Server (32 and 64-bit)
- Linux x86 (32 and 64-bit)
- Solaris (Sparc, x86, and x86-64)
- Mac OS X (Intel)
Hoard also runs on PowerPC systems (including IBM Power and Macs running Apple OS X).
Have you compared Hoard with SmartHeap SMP?
We tried SmartHeap SMP but it did not work on our Suns (due to an apparent race condition in the code).
Have you compared Hoard against mtmalloc or libumem?
Yes. Hoard is much faster than either. For example, here's an execution of threadtest on Solaris:Default: | 4.60 seconds | |||||||
Libmtmalloc: | 6.23 seconds | |||||||
Libumem: | 5.47 seconds | |||||||
Hoard 3.2: | 1.99 seconds |
Courtesy : http://www.hoard.org/