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

Reply via email to