On Wed, Apr 25, 2012 at 10:30 AM, Shantanu Kumar
<kumar.shant...@gmail.com> wrote:
> user=> (let [x (Foo. 10 20)] (time (Bar. (:a x) (:b x) 30)))
> "Elapsed time: 0.686 msecs"
> #user.Bar{:a 10, :b 20, :c 30}
>
> Whereas, doing the same with a map is very cheap:
>
> user=> (let [x {:a 10 :b 20}] (time (assoc x :c 30)))
> "Elapsed time: 0.05 msecs"
> {:c 30, :a 10, :b 20}

With Clojure 1.3 (lein repl in a project) I get the following results:

  user=> (time (dotimes [_ 10000000] (let [x (Foo. 10 20)] (Bar. (:a
x) (:b x) 30))))
  "Elapsed time: 739.961923 msecs"
  nil

and

  user=> (time (dotimes [_ 10000000] (let [x {:a 10 :b 20}] (assoc x :c 30))))
  "Elapsed time: 2496.002425 msecs"
  nil

Timing for a single assigment without looping is bound to have some
variance that does not reflect real performance.

Regards,
Lars Nilsson

-- 
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