Just use type hint in Clojure version and you'll see quite a difference in performance.
Your scala version is completely optimized / crippled to integers (maybe even unboxed), so there is no dynamic runtime overhead. IMHO, this kind of microbenchmarks are just good for finding general weak points of particular language / implementation and have nothing in common with real world performance. As you said in this case - it's not tail recursive at least. On 10/19/08, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > > Clojure's > > (defn fib [n] > (if (or (zero? n) (= n 1)) > 1 > (+ (fib (dec n) ) (fib (- n 2))))) > > (time (fib 36)) > > "Elapsed Time: 10475.325226 msecs" > 24157817 > > Scala's > > def fib(n:Int):Int=if (n==0||n==1)1 else fib(n-1)+fib(n-2) > def time(cal: =>Int)={ > val beginTime=System.currentTimeMillis > cal > val endTime=System.currentTimeMillis > println(endTime-beginTime) > } > fib(36) > res70:Int=24157817 > time(fib(36)) > 263 > > Both not tail recursive,both running on Repl (scala's interpreter),but > the difference between two is huge > 10475~263 > My box : Intel core2 cpu 1.86G,2G mem > Clojure and scala both latest build from svn > > any ideas? > > > > --~--~---------~--~----~------------~-------~--~----~ 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 To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~----------~----~----~----~------~----~------~--~---