I'm trying to optimize zippers for clojurescript. My benchmark is implementing the combinator systems from
https://www.wolframscience.com/nksonline/page-102 which heavily stress both navigating and modifying the tree. A major hotspot seems to be data structure creation time, which can be between 10 and 200x slower than jvm. I'm using Chrome 30.0.1599.101 . Vectors: (time (dotimes [x 1000000] ( vector x))) cljs: 2175 msecs clj: 11.414 msecs strangely, apply is faster for cljs : (time (dotimes [x 1000000] (apply vector [x]))) cljs: 1175 msecs clj: 64.919 msecs into gives about the same result for cljs. Creating a datastructure literal (eg [x]) is about 5x slower in cljs over clj, which I would take, however in the zipper case the number of children can vary dynamically. Lists: (apply list [x]) is about 2x faster than the vector case in cljs, and within about 5x of the jvm speed. Unless there is a better idea, I may try a specialized list-oriented zipper and see how it performs. Records: Creation is about ~10x slower than in clj. What's weird is that creating hashmaps is actually marginally faster than creating records (however, records still have much faster field access, so I'm using a record-based zipper implementation) (defrecord Test [a]) (time (dotimes [x 1000000] (Test. x))) cljs: 60 msecs clj: 7.00 msecs Is there a trick to speed up vector and/or record creation? Should I look into a custom datastructure? Any ideas welcome. Thanks! -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.