-
Notifications
You must be signed in to change notification settings - Fork 93
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Lean HAMT #220
Comments
Thanks for the link! I just looked at the page, and the "compact" representation which they show is actually very similar to what JVM Clojure uses for nodes which are less than half full. The idea of separate buckets for key/value pairs and subnodes is similar to what Hamster uses. I need to read the paper for details, though. |
Hmm. One issue with using a packed representation for nodes, is that Ruby doesn't have a fast, built-in popcount (count number of 1 bits in a number) operator. JVM Clojure uses popcount to convert logical indices to physical indices in a packed node, and this new CHAMP representation would need the same. I have created a gem called |
The pseudocode for deletion in Steindorfer and Vinju's paper is faulty; still, the idea is clear. And it is a good idea. |
An alternative to using |
I didn't know about immutable-ruby. What is the difference between that On Wed, Jan 13, 2016 at 5:49 AM, Alex Dowad [email protected]
|
It's a fork of Hamster which uses a different namespace. Structures are |
Just saw this and wanted to put a word in for pure Ruby options. The Ruby RDF core is moving to Obviously, if the advantages promised in the paper materialize, we are 👍 to an optional C extension and/or |
@alexdowad, with regard to naming, if you want to move, please put a big note at the top of the readme. Otherwise, people don't know what the difference is. I tried to figure it out on my own, and the only clue was that Hamster had more recent commits, so I figured this was the one to use. |
@dreammaker, any discussion of |
A new paper on HAMTs by Michael J. Steindorfer and Jurgen J. Vinju shows how to make HAMT implementations “lean”, meaning they consume less memory, and “efficient”, meaning speedier performance. The paper claims to make iteration and equality checks about 80 – 100% faster.
See http://bendyworks.com/leveling-clojures-hash-maps/ which links the paper.
Design the HAMT using this paper.
The text was updated successfully, but these errors were encountered: