Hoard Frequently Asked Questions

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<unsigned int, malloc_alloc> mylist;

What systems does Hoard work on?

Hoard has been successfully tested on numerous Windows, Linux and Solaris systems, including a 4-processor x86 box running Windows NT/2000, a 4-processor x86 box running RedHat Linux 6.0 and 6.1, and a 16-processor Sun Enterprise server running Solaris.

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

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. Click the "Licensing Info" link on the left for more information.