> Check link in archive: > https://web.archive.org/web/20150308140349/http://kazimirmajorinc.com/Documents/The-speed-of-eval-in-some-Lisp-implementations/index.html
As a Clojure programmer, I find that Clojure code rather...gross. Of course it's slow, Clojure is optimized completely differently from other lisps. On my machine the example in the link: (time (do (def i 1) (while (< i 1000000) (def i (+ i 1)) (do (def x 0) (def x (+ x 1)))))) Takes 1.1sec to run, but no Clojure programmer in their right mind would abuse global defs that way. The correct implementation is: (time (dotimes [i 1000000] (+ 0 i))) Which completes in .2ms once the JIT warms up (about 4-5 iterations). Same with the other example: (time (do (def i 1) (while (< i 1000000) (def i (+ i 1)) '(do (def x 0) (def x (+ x 1)))))) 266ms vs: (time (dotimes [i 1000000] '(do (def x 0) (def x (+ x 1))))) 3 ms with a warm JIT Timothy Baldridge