Hi Lee, I've done some more digging and seem to have found the root of the problem, it seems that java native methods are much slower when called in parallel. The following code illustrates the problem:
(letfn [(time-native [f] (let [c (class [])] (time (dorun (f (fn [_] (.isArray c)) (range 10000000))))))] (println "Sequential Test:") (time-native map) (println "Parallel Test:") (time-native pmap)) On a dual quad-core xeon box I get the following results: Sequential Test: "Elapsed time: 1054.807725 msecs" Parallel Test: "Elapsed time: 15302.605697 msecs" ie. the code executed in parallel was 15 times slower than the sequential version. The same can be seen with isInstance and isArray members of java.lang.Class. I'm not sure where to go from here, these functions are frequently used by clojure.core Perhaps someone with more JVM implementation knowledge can help? 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