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:
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?
- 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:
|Hoard 3.2:||1.99 seconds|
Can I use Hoard with a commercial application?
Yes. Hoard is available under two licenses. The first license is the GNU General Public License. That license is free, but it requires you to open-source your application. The second option is to purchase a license from the University of Texas at Austin.