2012/7/23 Alexander Semenov <[email protected]> > Oh yes, you're absolutely right. Now its 570 ms (just removed the 'doall'). > > Does the timing stabilize to a lesser value if you execute it multiple times (as they did in the scala test) :
(dotimes [ _ 10] (time (to-list tree)) :done) ? > > On Monday, July 23, 2012 11:34:40 PM UTC+3, lpetit wrote: > >> Hi, >> With the new version without laziness, what exact test do you pass ? >> >> Is it still (do (time (doall (to-list tree))) :done) ? >> >> Because the doall adds an unfair re-traversal of the list, I think >> >> I see. Just removed the lazyness and got ~800ms. >>> >>> >>> (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) >>> (into >>> (to-list l) >>> (conj (to-list r) v)) >>> [])) >>> >>> >>> On Monday, July 23, 2012 11:20:50 PM UTC+3, tbc++ wrote: >>>> >>>> > Thanks. But I don't do any number crunching here - just a huge >>>> structure >>>> > creation in memory. I can't get why removing the 'lazy-seq' wrapper >>>> from the >>>> > second 'concat' argument make things 10x times slower. >>>> >>>> Lazy-seqs require the allocation of a LazySeq object. Due to the lazy >>>> nature of this structure, we have to protect against multiple >>>> evaluation. This means that certain methods have to be synchronized: >>>> (https://github.com/clojure/**cl**ojure/blob/master/src/jvm/**cloj** >>>> ure/lang/LazySeq.java<https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/LazySeq.java>). >>>> >>>> All that makes it quite a bit slower than a simple Iterator. >>>> >>>> >>>> Timothy >>> >>> <http://groups.google.com/group/clojure?hl=en> >>> >> >> -- > 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 > -- 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
