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