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

Reply via email to