Hi everyone,
I am happy to announce a new major release line of HPPC. I've quietly
released 0.7.0 a few days ago, but have been polishing a few things
and I think it's ready now.
This release is a major effort for a few reasons.
* The documentation, releases and everything else has been migrated to github.
Wiki:
https://github.com/carrotsearch/hppc/wiki
Releases:
https://github.com/carrotsearch/hppc/releases
JavaDocs:
http://carrotsearch.github.io/hppc/releases/0.7.1/api/
* There have been a *number* of backward-incompatible API tweaks in
the library, mostly aimed at consolidating naming, shortening class
names and making HPPC more intuitive (for example with regard to what
"initial capacity" of a container means). Please take some time to go
through 0.7.0 changes highlighted here:
https://github.com/carrotsearch/hppc/blob/master/CHANGES.txt#L38-L296
* Perhaps the MOST important change made to the library results from a
somewhat fierce competition from other primitive-type libraries like
Koloboke and fastutil. The current speed-leading libraries all use
open addressing with linear hash resolution for associative containers
(maps, sets). This indeed speeds up computations a lot because it's
CPU cache-friendly. There are some nuances to this approach that may
lead to very poor performance (read: practical deadlocks). I think the
library should protect the user from these corner cases, even at a
small performance sacrifice. So in this release of HPPC there are
*two* flavors of associative containers -- scatter sets (maps) and
hash sets (and maps). Make yourself familiar with the difference
between the two. I wrote a small example that should, hopefully,
explain it:
https://github.com/carrotsearch/hppc/wiki/Scatter-Or-Hash
In short, hash sets and maps may be slightly slower than Koloboke or
fastutil's versions, but they should be less prone to fall into the
deadly collisions clash problem. Scatter sets and maps don't use this
protection, but use them with caution. All implementations are still
pretty darn fast; the difference will show only with really large data
churns.
Happy hacking,
Dawid
Carrot Search s.c.