On 13 abr, 20:14, Alex Robbins <alexander.j.robb...@gmail.com> wrote:
> That has tricked me before. The lazy one is fastest because all you
> are timing is the creation of the lazy seq, not its realization. Wrap
> the lazy seq in a doall inside the time macro.

Didn't know. Thanks !!

Now the timing of the lazy one is clearly worse:

(time (doall (flatten-maps-lazy data)))
user=> "Elapsed time: 0.469 msecs"
({:a 1, :b 1} {:a 2, :b 2} {:a 3, :b 3} {:a 4, :b 4} {:a 5, :b 5} {:a
6, :b 6} {:a 7, :b 7} {:a 8, :b 8})


> On Wed, Apr 13, 2011 at 12:59 PM, babui <jmgim...@gmail.com> wrote:
> > I was asking because my timings show that the lazy version is the
> > fastest one.
>
> > My (very simple & stupid) test is:
>
> > (defn flatten-maps
> >    "The original one"
> >    ....)
>
> > (defn flatten-maps-lazy
> >    "The lazy one"
> >    ....)
>
> > (defn flatten-maps-eager
> >    "The eager one"
> >    ....)
>
> > (defn flatten-maps-recur
> >     "Using recur"
> >     ....)
>
> > And data is:
>
> > (def data [{:a 1 :b 1 :c [{:a 2 :b 2 :c [{:a 3 :b 3 :c []}]} {:a 4 :b
> > 4 :c []}]} {:a 5 :b 5 :c [{:a 6 :b 6 :c [{:a 7 :b 7 :c []}]} {:a 8 :b
> > 8 :c []}]}])
>
> > That is, the original data but with different numbers to check if the
> > result is ok:
>
> > (time (flatten-maps data))
> > user=> "Elapsed time: 0.14 msecs"
> > ({:a 5, :b 5} {:a 1, :b 1} {:a 4, :b 4} {:a 2, :b 2} {:a 3, :b 3} {:a
> > 8, :b 8} {:a 6, :b 6} {:a 7, :b 7})
>
> > (time (flatten-maps-lazy data))
> > user=> "Elapsed time: 0.034 msecs"
> > ({:a 1, :b 1} {:a 2, :b 2} {:a 3, :b 3} {:a 4, :b 4} {:a 5, :b 5} {:a
> > 6, :b 6} {:a 7, :b 7} {:a 8, :b 8})
>
> > (time (flatten-maps-eager data))
> > user=> "Elapsed time: 0.129 msecs"
> > [{:a 1, :b 1} {:a 2, :b 2} {:a 3, :b 3} {:a 4, :b 4} {:a 5, :b 5} {:a
> > 6, :b 6} {:a 7, :b 7} {:a 8, :b 8}]
>
> > (time (flatten-maps-recur data))
> > user=> "Elapsed time: 0.129 msecs"
> > ({:a 8, :b 8} {:a 7, :b 7} {:a 6, :b 6} {:a 5, :b 5} {:a 4, :b 4} {:a
> > 3, :b 3} {:a 2, :b 2} {:a 1, :b 1})
>
> > So my tests show that the fastest is the lazy one.
>
> > Regards,
>
> > Juan Manuel
>
> > --
> > 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
> > Note that posts from new members are moderated - please be patient with 
> > your first post.
> > To unsubscribe from this group, send email to
> > clojure+unsubscr...@googlegroups.com
> > 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 clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to