Hello.
I did a naive simple benchmark of Haskell and Scala recently and now i
decided to add Clojure to the picture. Here is the idea
http://blog.worldcognition.com/2012/06/folding-tree-to-list-benchmark-scala-vs.html
So, I wrote the following functions:
(defn generate-tree [[h & t :as coll]]
(if (seq coll)
(let [lr (generate-tree t)] [h lr lr])
nil))
(defn to-list [[v l r :as node]]
(if-not (nil? node)
(concat
(to-list l)
(lazy-seq (cons v (to-list r))))
[]))
Now I get these results:
(def tree (generate-tree (range 1 21)))
(do (time (doall (to-list tree))) :done)
"Elapsed time: 1681.75 msecs"
:done
If I remove the 'lazy-seq' wrapping second 'concat' argument, things become
worst:
(do (time (doall (to-list tree))) :done)
"Elapsed time: 19716.222 msecs"
Why is this so? Both results are kind of disappointing for me cause Scala
gives me ~270ms time using functional code and 5x faster using the mutable
one (on much slower machine).
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
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