Hi David,

It's odd/interesting that you're finding yourself restarting the JVM regularly. 
 For many years, I've developed Clojure with very rare restarts; especially if 
my baseline project configuration is stable, I often have REPL sessions that 
last days.

(Random thought: it'd be cute if various development environments regularly 
plinged `(.. java.lang.management.ManagementFactory getRuntimeMXBean 
getUptime)` so as to show uptime of your REPL/runtime.)

Stuart's clojure.tools.namespace patches over a couple of long-standing 
trapdoors around code loading, but I've always preferred simply loading 
files/expressions into the REPL, much as we described in the 'REPL-oriented 
Programming' chapter in the book.  I generally prefer to have as complete an 
understanding as possible of what's being loaded / being done to my REPL, and 
so various automated tools have never appealed to me.

As for testing, I've always used `clojure.test`, so re-running tests after 
changing them or the code under test has always been just a `(test-ns *ns*)` 
away.  This was actually a primary objective of mine in porting `clojure.test` 
to [clojurescript.test](https://github.com/cemerick/clojurescript.test), which 
carries forward all of the former's dynamic-runtime facilities like `test-ns` 
and `run-all-tests`, despite the lack of first-class namespaces and the static 
nature of ClojureScript compilation and Closure optimization.

In any case, whatever you do, any workflow that results in your bouncing the 
JVM is a broken one, and any tools/libraries/frameworks/whatever that push you 
in that direction are to be avoided IMO.

Cheers,

- Chas

On Jun 4, 2013, at 4:51 PM, David Pollak wrote:

> Folks,
> 
> I've been doing Clojure coding for the last couple of weeks and really love 
> the language... and the community is fantastic.
> 
> But the development cycle is slow.
> 
> I'm coming from mostly Scala and a little Java.
> 
> In Java, there's no REPL or anything... but the compile/test cycle is very 
> fast. So, I can make a few changes to code, type "mvn test" and see the 
> results typically in less than 2 seconds (my MacBook Pro and my Linux 
> desktop).
> 
> In Scala, the compile cycles are slower than in Java because the Scala 
> compiler is doing a whole ton more. But in sbt (Simple [ha ha] Built Tool), 
> one is always building/testing in the same JVM instance so the JVM is warmed 
> up. A "change code and run tests" cycle is typically as fast as it is in 
> Java. For example, Changing something significant in the net.liftweb.util 
> package and doing a recompile and test takes about 9 seconds. This is running 
> > 450 tests.
> 
> My Clojure development cycle is much slower. On my MacBook Pro (3rd gen i7 
> quadcore processor, 16GB of ram), each time I make a change and re-run the 
> test for Plugh ( https://github.com/projectplugh/plugh ) it takes about 20 
> second and there are only 4 tests. On my desktop Linux box (i7-3770 with 32gb 
> of RAM) it takes about 4 seconds to run the 4 tests. I also ran stuff on a 
> very old ThinkPad (core 2 duo with 4GB ram running Linux Mint 15) and the 
> test cycle takes 12 second.
> 
> So... the questions:
> 
> * Is there a faster cycle than to change code, change tests and type "lein 
> test" to see the results?
> * Is there a way to keep everything in a hot JVM (I've done a little research 
> on Nailgun... but it seems to be out of vogue) so there's no JVM start-up 
> penalty?
> * Is there a reason for the huge disparity between my MacBook Pro and my 
> desktop box?
> 
> Thanks,
> 
> David
> 
> 
> -- 
> Telegram, Simply Beautiful CMS https://telegr.am
> Lift, the simply functional web framework http://liftweb.net
> Follow me: http://twitter.com/dpp
> Blog: http://goodstuff.im
> 
> 
> -- 
> -- 
> 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.
>  
>  

-- 
-- 
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.


Reply via email to