Skip to content

Instantly share code, notes, and snippets.

@amalloy
Created July 6, 2012 20:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save amalloy/3062615 to your computer and use it in GitHub Desktop.
Save amalloy/3062615 to your computer and use it in GitHub Desktop.
(def timing
(for [seq-len [100 10000 1000000]
:let [v (vec (range seq-len))]
[name [f combine]] {:map [map reduce]
:r/map [r/map r/reduce]
:fold [r/map r/fold]}
num-layers [0 2 5 10 25]]
{:f name,
:len seq-len,
:layers num-layers,
:ms (let [start (System/currentTimeMillis)]
(dotimes [_ 100]
(combine + (nth (iterate #(f inc %) v)
num-layers)))
(- (System/currentTimeMillis) start))}))
(->> timing
(group-by :f)
(vals)
(pprint))
([{:f :map, :len 100, :layers 0, :ms 3}
{:f :map, :len 100, :layers 2, :ms 11}
{:f :map, :len 100, :layers 5, :ms 21}
{:f :map, :len 100, :layers 10, :ms 36}
{:f :map, :len 100, :layers 25, :ms 19}
{:f :map, :len 10000, :layers 0, :ms 19}
{:f :map, :len 10000, :layers 2, :ms 66}
{:f :map, :len 10000, :layers 5, :ms 149}
{:f :map, :len 10000, :layers 10, :ms 219}
{:f :map, :len 10000, :layers 25, :ms 515}
{:f :map, :len 1000000, :layers 0, :ms 2030}
{:f :map, :len 1000000, :layers 2, :ms 5381}
{:f :map, :len 1000000, :layers 5, :ms 10600}
{:f :map, :len 1000000, :layers 10, :ms 20596}
{:f :map, :len 1000000, :layers 25, :ms 48287}]
[{:f :r/map, :len 100, :layers 0, :ms 1}
{:f :r/map, :len 100, :layers 2, :ms 1}
{:f :r/map, :len 100, :layers 5, :ms 1}
{:f :r/map, :len 100, :layers 10, :ms 3}
{:f :r/map, :len 100, :layers 25, :ms 4}
{:f :r/map, :len 10000, :layers 0, :ms 13}
{:f :r/map, :len 10000, :layers 2, :ms 42}
{:f :r/map, :len 10000, :layers 5, :ms 97}
{:f :r/map, :len 10000, :layers 10, :ms 93}
{:f :r/map, :len 10000, :layers 25, :ms 221}
{:f :r/map, :len 1000000, :layers 0, :ms 2024}
{:f :r/map, :len 1000000, :layers 2, :ms 3402}
{:f :r/map, :len 1000000, :layers 5, :ms 5850}
{:f :r/map, :len 1000000, :layers 10, :ms 9893}
{:f :r/map, :len 1000000, :layers 25, :ms 21773}]
[{:f :fold, :len 100, :layers 0, :ms 1}
{:f :fold, :len 100, :layers 2, :ms 1}
{:f :fold, :len 100, :layers 5, :ms 2}
{:f :fold, :len 100, :layers 10, :ms 2}
{:f :fold, :len 100, :layers 25, :ms 4}
{:f :fold, :len 10000, :layers 0, :ms 84}
{:f :fold, :len 10000, :layers 2, :ms 46}
{:f :fold, :len 10000, :layers 5, :ms 56}
{:f :fold, :len 10000, :layers 10, :ms 71}
{:f :fold, :len 10000, :layers 25, :ms 135}
{:f :fold, :len 1000000, :layers 0, :ms 870}
{:f :fold, :len 1000000, :layers 2, :ms 1256}
{:f :fold, :len 1000000, :layers 5, :ms 2118}
{:f :fold, :len 1000000, :layers 10, :ms 3594}
{:f :fold, :len 1000000, :layers 25, :ms 8054}])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment