HPPC 0.7.0 (and 0.7.1) released

47 views
Skip to first unread message

Dawid Weiss

unread,
May 7, 2015, 4:23:44 AM5/7/15
to java-high-performance-primitive-collections
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.

Vincent Sonnier

unread,
May 7, 2015, 6:07:44 AM5/7/15
to java-high-performance...@googlegroups.com
Hello Dawid,

Congratulations for your release ! That was quite a sprint, or rather a marathon :)

Speaking of hacking, I was able to keep up brewing my own HPPC-RT from v0.7x changes, as seen there :

Hopefully now that you stopped running, I'll be able to finish this:

For people who don't know, HPPC-RT is a fork of HPPC now gone wild, about which Dawid was kind enough to mention in as an "alternative".
For better of worse though both has diverged enough to be completely separated, see there 
https://github.com/vsonnier/hppcrt/wiki for the main differences.
  

Regards,

Vincent

Dawid Weiss

unread,
May 7, 2015, 6:10:30 AM5/7/15
to java-high-performance-primitive-collections
> That was quite a sprint, or rather a marathon :)

Yeah, it was longer than I anticipated. Typical :) I'm quite happy
with the changes overall though, it's a smoother experience and I'm
comfortable knowing hash sets are not likely to stall due to hash/data
conflicts.

Dawid
Reply all
Reply to author
Forward
0 new messages