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

Reply via email to