> 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

Reply via email to