Thanks Herwig, I used your plugin with the following 2 burn variants: (defn burn-slow [& _] (count (last (take 1000 (iterate #(reduce conj '() %) (range 10000))))))
(defn burn-fast [& _] (count (last (take 1000 (iterate #(reduce conj* (list nil) %) (range 10000)))))) Where conj* is just a copy of clojure.core/conj. In the first case I see the same behaviour you saw, fast serially and in separate processes (~115 ms) but slow in parallel for both the same and different class loaders (708ms - 950ms). In the second case where I avoid any references to clojure.lang.PersistentList$EmptyList and use a clean copy of conj I see much better performance in all cases (~ 40ms - 50ms) and no slow down in the parallel cases in the same JVM. Until Lee has a representative benchmark for his application it's difficult to tell if he's experiencing the same problem but there would seem to be a case for changing the PersistentList implementation in clojure.lang. Cameron. -- 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