Jonathan showed destructuring/indexing very nicely. Here are some
timings for vector/list creation:
(let [lst '(1 2 3)]
(timings 1e7
(list 1 2 3)
(cons 1 (cons 2 (cons 3 ())))
(conj (conj (conj () 3) 2) 1)
(vector 1 2 3)
(vec lst)
(conj (conj (conj [] 1) 2) 3)))
6590.33 ms 61.2% 1.6x (list 1 2 3)
7571.30 ms 70.3% 1.4x (cons 1 (cons 2 (cons 3 ())))
7773.67 ms 72.2% 1.4x (conj (conj (conj () 3) 2) 1)
9601.74 ms 89.1% 1.1x (vector 1 2 3)
8612.29 ms 79.9% 1.3x (vec lst)
10772.88 ms 100.0% 1.0x (conj (conj (conj [] 1) 2) 3)
Yes, it looks that list creation is faster than vector creation.
Frantisek
On Jul 9, 12:17 am, John Harrop <[email protected]> wrote:
> On Wed, Jul 8, 2009 at 4:57 PM, Frantisek Sodomka <[email protected]>wrote:
>
> > So far it seems that vectors win in Clojure:
>
> > (timings 3e5
> > (let [v (vector 1 2 3) a (nth v 0) b (nth v 1) c (nth v 2)] (+ a b
> > c))
> > (let [lst (list 1 2 3) a (nth lst 0) b (nth lst 1) c (nth lst 2)] (+
> > a b c)))
>
> > =>
> > 680.63 ms 83.6% 1.2x (let [v (vector 1 2 3) a (nth v 0) b (nth
> > v 1) c (nth v 2)] (+ a b c))
> > 813.79 ms 100.0% 1.0x (let [lst (list 1 2 3) a (nth lst 0) b
> > (nth lst 1) c (nth lst 2)] (+ a b c))
>
> Does using vec instead of vector make a difference? Using first, rest,
> first, rest instead of nth to destructure the list?
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---