This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2016-01-28
Channels
- # aatree (3)
- # alda (8)
- # avi (21)
- # beginners (37)
- # boot (193)
- # cbus (1)
- # cider (29)
- # cljs-dev (8)
- # cljsjs (3)
- # cljsrn (20)
- # clojure (76)
- # clojure-dev (13)
- # clojure-miami (20)
- # clojure-portugal (2)
- # clojure-russia (220)
- # clojure-sg (2)
- # clojurebridge (5)
- # clojurescript (94)
- # community-development (14)
- # conf-proposals (110)
- # core-async (12)
- # cursive (12)
- # datascript (6)
- # datomic (14)
- # dirac (72)
- # emacs (49)
- # hoplon (86)
- # jobs (33)
- # jobs-discuss (1)
- # ldnclj (6)
- # lein-figwheel (1)
- # off-topic (56)
- # om (139)
- # onyx (29)
- # pedestal (17)
- # proton (23)
- # re-frame (45)
- # reagent (35)
- # ring-swagger (4)
- # test-check (1)
- # testing (8)
- # yada (11)
assoc, dissoc, get/find, seq, reduce done. Next on the roster is transient impl (straightforward) & iterator (challenging)
@ghadi: I've made a port of Lean Hash Maps for ClojureScript https://github.com/bendyworks/lean-map
Yep the iteration is pretty straight forward (compared to the current impl) what looks challenging about it to you?
The tricky part for me right now is getting assoc
and dissoc
to current perf specs. They are around 2 - 4x slower in some cases right now . The transient assoc!
and dissoc!
are also pretty slow.
Feel free to PM if you want help / someone to rubber duck your ideas.
AFAICT assoc
that requires making a node seems to be the slow down (at least in JS land). If you look at the reference impl you also see that a nodes array can contain 0 - 64 items (32 Key Value pairs) as opposed to 0 - 32 items for the current HAMT implementation.
so it might be too big for cpu caches
Another possibility is that it's due to running on JavaScript not the JVM. According to the paper their implementation of assoc
/ dissoc
was comparable to Clojure's. So you might not see what I'm currently seeing