(set! *unchecked-math* true)
(defn add-up ^long [^long n]
(loop [n n i 0 sum 0]
(if (< n i)
sum
(recur n (inc i) (+ i sum)))))
(defn fib ^long [^long n]
(if (<= n 1) 1
(+ (fib (dec n)) (fib (- n 2)))))
(comment
;; ~130ms
(dotimes [_ 10]
(time
(add-up 1e8)))
;; ~1180ms
(dotimes [_ 10]
(time
(fib 41)))
)
All numbers from 2.66ghz i7 Macbook Pro OS X 10.7 JDK 7 64bit
As you can see Node.js is trounced. This is with 1.3.0 alphas, but you can achieve the same thing in 1.2.0 if you know what you’re doing.
On my machine Node.js 0.4.8 for addup 1e8 was ~990ms, for fib 41 ~7600ms.
Node.js | Clojure
|
add-up 990ms | 130ms
|
fib(41) 7600ms | 1180ms