Roughly... My FPU module is slow tonight....

> My own tests shows that the transient version is twice as fast:
> 
> (time (dotimes [_ 1000000] (assoc [1 2 3 4 5 6 7 8 9 0] 3 5 6 8)))
> Elapsed time: 711.848312 msecs
> 
> (time (dotimes [_ 1000000] (persistent! (assoc! (transient [1 2 3 4 5 6 7 8 9 
> 0]) 3 5 6 8))))
> Elapsed time: 399.466556 msecs
> 
> Luc P.
> 
> > user=>  (use '[criterium.core])
> > nil
> > user=> (bench (assoc [1 2 3 4 5 6 7 8 9 0] 3 nil 6 'a)) ;;2 operations
> > 
> > Evaluation count : 125829120 in 60 samples of 2097152 calls.
> >               Execution time mean : 488.826554 ns
> >      Execution time std-deviation : 19.952095 ns
> >     Execution time lower quantile : 459.910320 ns ( 2.5%)
> >     Execution time upper quantile : 527.008269 ns (97.5%)
> > nil
> > user=> (bench (persistent! (assoc! (transient [1 2 3 4 5 6 7 8 9 0]) 3 
> > nil 6 'a)))
> > Evaluation count : 97399860 in 60 samples of 1623331 calls.
> >               Execution time mean : 639.789263 ns
> >      Execution time std-deviation : 26.265080 ns
> >     Execution time lower quantile : 597.753127 ns ( 2.5%)
> >     Execution time upper quantile : 687.838668 ns (97.5%)
> > nil
> > user=> (bench (assoc [1 2 3 4 5 6 7 8 9 0] 3 nil 6 'a 0 "z" 2 5)) ;;4 
> > operations
> > Evaluation count : 68275920 in 60 samples of 1137932 calls.
> >               Execution time mean : 901.407416 ns
> >      Execution time std-deviation : 35.682637 ns
> >     Execution time lower quantile : 851.060950 ns ( 2.5%)
> >     Execution time upper quantile : 970.492949 ns (97.5%)
> > 
> > Found 1 outliers in 60 samples (1.6667 %)
> >      low-severe     1 (1.6667 %)
> >   Variance from outliers : 25.4849 % Variance is moderately inflated by 
> > outliers
> > nil
> > user=> (bench (persistent! (assoc! (transient [1 2 3 4 5 6 7 8 9 0]) 3 
> > nil 6 'a 0 "z" 2 5)))
> > Evaluation count : 68844120 in 60 samples of 1147402 calls.
> >               Execution time mean : 893.798444 ns
> >      Execution time std-deviation : 24.566655 ns
> >     Execution time lower quantile : 848.307600 ns ( 2.5%)
> >     Execution time upper quantile : 952.841308 ns (97.5%)
> > 
> > Found 13 outliers in 60 samples (21.6667 %)
> >      low-severe     7 (11.6667 %)
> >      low-mild     6 (10.0000 %)
> >   Variance from outliers : 14.2244 % Variance is moderately inflated by 
> > outliers
> > nil
> > user=> (bench (assoc [1 2 3 4 5 6 7 8 9 0] 3 nil 6 'a 0 "z" 2 5 4 (atom 
> > []) 7 "v")) ;;6 operations
> > Evaluation count : 39783840 in 60 samples of 663064 calls.
> >               Execution time mean : 1.480511 us
> >      Execution time std-deviation : 50.249443 ns
> >     Execution time lower quantile : 1.425053 us ( 2.5%)
> >     Execution time upper quantile : 1.591407 us (97.5%)
> > nil
> > user=> (bench (persistent! (assoc! (transient [1 2 3 4 5 6 7 8 9 0]) 3 
> > nil 6 'a 0 "z" 2 5 4 (atom []) 7 "v")))
> > Evaluation count : 44755020 in 60 samples of 745917 calls.
> >               Execution time mean : 1.358394 us
> >      Execution time std-deviation : 49.723547 ns
> >     Execution time lower quantile : 1.306456 us ( 2.5%)
> >     Execution time upper quantile : 1.473882 us (97.5%)
> > nil
> > 
> > user=> (bench (assoc [1 2 3 4 5 6 7 8 9 0] 3 nil 6 'a 0 "z" 2 5 4 (atom 
> > []) 7 "v" 5 1200 8 -1111)) ;;8 operations
> > Evaluation count : 31457280 in 60 samples of 524288 calls.
> >               Execution time mean : 1.907389 us
> >      Execution time std-deviation : 74.523511 ns
> >     Execution time lower quantile : 1.822336 us ( 2.5%)
> >     Execution time upper quantile : 2.076044 us (97.5%)
> > nil
> > user=> (bench (persistent! (assoc! (transient [1 2 3 4 5 6 7 8 9 0]) 3 
> > nil 6 'a 0 "z" 2 5 4 (atom []) 7 "v" 5 1200 8 -1111)))
> > Evaluation count : 37739640 in 60 samples of 628994 calls.
> >               Execution time mean : 1.623599 us
> >      Execution time std-deviation : 68.677518 ns
> >     Execution time lower quantile : 1.529454 us ( 2.5%)
> >     Execution time upper quantile : 1.777040 us (97.5%)
> > 
> > Found 1 outliers in 60 samples (1.6667 %)
> >      low-severe     1 (1.6667 %)
> >   Variance from outliers : 28.6901 % Variance is moderately inflated by 
> > outliers
> > nil
> > 
> > 
> > etc etc...
> > 
> > you get the idea...conclusion: there is no real benefit to using 
> > transients for less than 6 operations...
> > 
> > Jim
> > 
> > 
> > 
> > 
> > On 08/11/12 23:04, Philip Potter wrote:
> > >
> > > Share the benchmark!
> > >
> > > In theory, conversion to and from transients should be constant time 
> > > operations, but it would not surprise me if in practice transients 
> > > aren't universally faster than persistent.
> > >
> > > Performance in different environments varies wildly, so I would doubt 
> > > results from a small benchmark on a single machine are universally 
> > > applicable.
> > >
> > > Benchmarking is hard, particularly on the jvm. Caching and dynamic 
> > > inlining and Hotspot confuse matters greatly.
> > >
> > > Phil
> > >
> > > On Nov 8, 2012 10:49 PM, "Jim - FooBar();" <jimpil1...@gmail.com 
> > > <mailto:jimpil1...@gmail.com>> wrote:
> > >
> > >     Some quick benchmarking that I did, showed that it is actually
> > >     more expensive to convert to transient, conj/assoc and convert
> > >     back to persistent than the regular conj/assoc unless you want to
> > >     do more than 8 operations at a time (preferably more than that).
> > >     My experiments were on vectors and the vararg version of assoc/assoc!.
> > >
> > >     any thoughts? would you agree?
> > >
> > >     Jim
> > >
> > >     -- 
> > >     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
> > >     <mailto: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
> > >     <mailto:clojure%2bunsubscr...@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 
> > 
> > -- 
> > 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
> --
> Softaddicts<lprefonta...@softaddicts.ca> sent by ibisMail from my ipad!
> 
> -- 
> 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
> 
--
Softaddicts<lprefonta...@softaddicts.ca> sent by ibisMail from my ipad!

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