To give people an idea of the update-in and seq destructuring improvements:
(let [d3 {:a {:b {:c 2}}}] (dotimes [_ 10] (time (dotimes [_ 10000000] (update-in d3 [:a :b :c] inc))))) ;;;;;;;;;;; 1.9 alpha3 ;;;;;;;;;;;;;; user=> "Elapsed time: 6489.189065 msecs" "Elapsed time: 6501.518961 msecs" "Elapsed time: 6479.994554 msecs" "Elapsed time: 6477.236659 msecs" "Elapsed time: 6490.542382 msecs" "Elapsed time: 6494.044657 msecs" "Elapsed time: 6475.188285 msecs" "Elapsed time: 6498.734628 msecs" "Elapsed time: 6486.312312 msecs" "Elapsed time: 6476.566904 msecs" nil ;;;;;;;;;;; 1.9 alpha4 ;;;;;;;;;;;;;; user=> "Elapsed time: 1613.631053 msecs" "Elapsed time: 1614.271583 msecs" "Elapsed time: 1607.393994 msecs" "Elapsed time: 1605.966032 msecs" "Elapsed time: 1605.731867 msecs" "Elapsed time: 1605.836779 msecs" "Elapsed time: 1617.090363 msecs" "Elapsed time: 1611.065741 msecs" "Elapsed time: 1611.249945 msecs" "Elapsed time: 1624.351585 msecs" nil (let [v (into [] (range 1000000))] (dotimes [_ 10] (time (dotimes [_ 10] (loop [[x & xs] v] (if xs (recur xs) x)))))) ;;;;;;;;;;; 1.9 alpha3 ;;;;;;;;;;;;;; user=> "Elapsed time: 1531.858419 msecs" "Elapsed time: 1521.997662 msecs" "Elapsed time: 1499.931748 msecs" "Elapsed time: 1499.745901 msecs" "Elapsed time: 1496.63342 msecs" "Elapsed time: 1499.363234 msecs" "Elapsed time: 1506.309383 msecs" "Elapsed time: 1514.943316 msecs" "Elapsed time: 1534.90731 msecs" "Elapsed time: 1524.550125 msecs" nil ;;;;;;;;;;; 1.9 alpha4 ;;;;;;;;;;;;;; user=> "Elapsed time: 155.544283 msecs" "Elapsed time: 131.861647 msecs" "Elapsed time: 141.774727 msecs" "Elapsed time: 238.939786 msecs" "Elapsed time: 294.832594 msecs" "Elapsed time: 278.476703 msecs" "Elapsed time: 133.259029 msecs" "Elapsed time: 139.917267 msecs" "Elapsed time: 137.444001 msecs" "Elapsed time: 147.852057 msecs” nil The code now produced for [x & xs] style destructuring is now as good as the best first/next code you could write by hand, while the code produced for [x y z] destructuring of indexed items is the same (fast, indexed) as always. Rich > On May 31, 2016, at 11:41 AM, Stuart Halloway <stuart.hallo...@gmail.com> > wrote: > > Clojure 1.9.0-alpha4 is now available. > > Try it via > > - Download: https://repo1.maven.org/maven3/org/clojure/clojure/1.9.0-alpha4 > - Leiningen: [org.clojure/clojure "1.9.0-alpha4"] > > 1.9.0-alpha4 includes the following changes since 1.9.0-alpha3: > > - fix describe empty cat > - improve update-in perf > - optimize seq (&) destructuring > > > -- > 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/d/optout. -- 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/d/optout.