Fork me on GitHub
#clojure-dev
<
2019-08-16
>
cgrand10:08:41

@jaihindhreddy https://github.com/cgrand/confluent-map/blob/master/src/main/java/net/cgrand/TrieMap_5Bits.java is a patched version of CHAMP to use Clojure interfaces and hash functions (for benchmarking purpose)

parrot 2
💯 1
❤️ 1
👍 1
jaihindhreddy10:08:29

Thanks! I think I know what I'm doing this weekend!

favila11:08:39

Champs in clojurescript exist also

nam.hyunwoo05:08:30

Can you spot where can I find clojurescript version?

favila12:08:25

Yep that’s what I was thinking of. There’s a talk also

nam.hyunwoo14:08:23

Great, thanks!

favila11:08:52

Another wrinkle is that until recently Clojure PHM left empty nodes after dissoc, which caused pathological behavior in some of the champ vs hamt benchmarks

andy.fingerhut19:08:00

Huh, I know that I am slow to realize things sometimes, but it just finally hit me that while Clojure's built-in persistent data structures are (I believe) guaranteed to produce trees (not DAGs) of objects in memory (except for leaf elements that are identical), the confluently persistent ones like RRB vectors, etc. that can quickly concatenate/merge two arbitrary such data structures can be used to concatenate large data structures with themselves, and you can end up with all sorts of reuse of internal objects in a single collection.