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.
In order to benefit from Hoard, you have to tell STL to use malloc instead of its internal custom memory allocator:
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.
We tried SmartHeap SMP but it did not work on our Suns (due to an apparent race condition in the code).
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 |
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.