On 23 Oct 2013, at 12:44, Timothy Baldridge <tbaldri...@gmail.com> wrote:
> That being said, the #1 rule of benchmarking with lein is don't benchmark > with lein. The JVM lein spins up has a different set of goals (namely startup > time). The best way to benchmark is to run the test several thousand times, > from a jar created with lein uberjar. I'm well aware of the issues associated with micro-benchmarking on the JVM. Bear in mind that what I'm doing isn't micro-benchmarking. I have a Scala program that runs in 2.5 minutes, which when re-implemented in Clojure doesn't finish after being run overnight. I.e. the Clojure is (at least) 2 orders of magnitude slower than the Scala. I'd love to be able to run it just once - running it thousands of times with its current performance would require *years*. I've now got it recompiled as an uberjar and I'm running it with 12G RAM (-Xms12G -Xmx12G). So far, it's been running for 12 minutes (i.e. 6x longer than the Scala version takes to complete) and YourKit shows me that it's used less than 300MB RAM (i.e. the vast majority of the 12G is unused). YourKit also shows me that it's still the case that it's spending 99% of its time in PersistentHashSet.cons. I completely understand that playing around with pre-compilation and JVM settings will make a difference to the observed performance. But not two orders of magnitude difference, surely? It strikes me that there's clearly something that I'm missing in the Clojure implementation that's making a dramatic difference to performance. I'd love some help determining what that something is. -- paul.butcher->msgCount++ Snetterton, Castle Combe, Cadwell Park... Who says I have a one track mind? http://www.paulbutcher.com/ LinkedIn: http://www.linkedin.com/in/paulbutcher MSN: p...@paulbutcher.com AIM: paulrabutcher Skype: paulrabutcher -- -- 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.