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 [email protected]
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
-~----------~----~----~----~------~----~------~--~---