Skip to content

Instantly share code, notes, and snippets.

@gaborbarna
Last active December 12, 2015 01:58
Show Gist options
  • Save gaborbarna/4695353 to your computer and use it in GitHub Desktop.
Save gaborbarna/4695353 to your computer and use it in GitHub Desktop.
(ns hash-test.core
(:require [criterium.core :as crit]))
(defn fill-with-into [items]
(into {} (map vec items)))
(defn no-assoc [items]
(apply hash-map items))
(defn assoc-all [items]
(apply assoc {} items))
(defn assoc-each-one [items]
(reduce (fn [h [k v]] (assoc h k v)) {} items))
(defn benchmark-assoc []
(doseq [n [1e4 1e5]]
(let [flat-rands (take n (repeatedly rand))
pair-rands (partition 2 flat-rands)]
(println (str "--- " n " pairs"))
(println)
(println "Fill with into")
(crit/bench (fill-with-into pair-rands))
(println)
(println "Initialize with all")
(crit/bench (no-assoc flat-rands))
(println)
(println "Associng in one go")
(crit/bench (assoc-all flat-rands))
(println)
(println "Associng one-by-one")
(crit/bench (assoc-each-one pair-rands)))))
hash-test.core> (benchmark-assoc)
--- 10000.0 pairs
Fill with into
Evaluation count : 9960 in 60 samples of 166 calls.
Execution time mean : 6.102236 ms
Execution time std-deviation : 213.211593 us
Execution time lower quantile : 5.935354 ms ( 2.5%)
Execution time upper quantile : 6.670326 ms (97.5%)
Found 3 outliers in 60 samples (5.0000 %)
low-severe 2 (3.3333 %)
low-mild 1 (1.6667 %)
Variance from outliers : 22.1719 % Variance is moderately inflated by outliers
Initialize with all
Evaluation count : 26820 in 60 samples of 447 calls.
Execution time mean : 2.271764 ms
Execution time std-deviation : 62.430101 us
Execution time lower quantile : 2.215953 ms ( 2.5%)
Execution time upper quantile : 2.395317 ms (97.5%)
Found 3 outliers in 60 samples (5.0000 %)
low-severe 2 (3.3333 %)
low-mild 1 (1.6667 %)
Variance from outliers : 14.2241 % Variance is moderately inflated by outliers
Associng in one go
Evaluation count : 20040 in 60 samples of 334 calls.
Execution time mean : 3.040990 ms
Execution time std-deviation : 96.853800 us
Execution time lower quantile : 2.955243 ms ( 2.5%)
Execution time upper quantile : 3.296999 ms (97.5%)
Found 4 outliers in 60 samples (6.6667 %)
low-severe 1 (1.6667 %)
low-mild 3 (5.0000 %)
Variance from outliers : 18.9731 % Variance is moderately inflated by outliers
Associng one-by-one
Evaluation count : 11760 in 60 samples of 196 calls.
Execution time mean : 5.116783 ms
Execution time std-deviation : 145.897439 us
Execution time lower quantile : 4.989477 ms ( 2.5%)
Execution time upper quantile : 5.491941 ms (97.5%)
Found 6 outliers in 60 samples (10.0000 %)
low-severe 4 (6.6667 %)
low-mild 2 (3.3333 %)
Variance from outliers : 15.7769 % Variance is moderately inflated by outliers
--- 100000.0 pairs
Fill with into
Evaluation count : 840 in 60 samples of 14 calls.
Execution time mean : 76.874706 ms
Execution time std-deviation : 4.083293 ms
Execution time lower quantile : 72.273122 ms ( 2.5%)
Execution time upper quantile : 85.490686 ms (97.5%)
Found 1 outliers in 60 samples (1.6667 %)
low-severe 1 (1.6667 %)
Variance from outliers : 38.5232 % Variance is moderately inflated by outliers
Initialize with all
Evaluation count : 1920 in 60 samples of 32 calls.
Execution time mean : 32.798548 ms
Execution time std-deviation : 1.895327 ms
Execution time lower quantile : 30.610709 ms ( 2.5%)
Execution time upper quantile : 37.141475 ms (97.5%)
Found 5 outliers in 60 samples (8.3333 %)
low-severe 5 (8.3333 %)
Variance from outliers : 43.4208 % Variance is moderately inflated by outliers
Associng in one go
Evaluation count : 1440 in 60 samples of 24 calls.
Execution time mean : 46.450031 ms
Execution time std-deviation : 3.032011 ms
Execution time lower quantile : 43.102989 ms ( 2.5%)
Execution time upper quantile : 53.302902 ms (97.5%)
Found 2 outliers in 60 samples (3.3333 %)
low-severe 2 (3.3333 %)
Variance from outliers : 48.4720 % Variance is moderately inflated by outliers
Associng one-by-one
Evaluation count : 960 in 60 samples of 16 calls.
Execution time mean : 65.423463 ms
Execution time std-deviation : 2.463418 ms
Execution time lower quantile : 62.811709 ms ( 2.5%)
Execution time upper quantile : 73.246586 ms (97.5%)
Found 4 outliers in 60 samples (6.6667 %)
low-severe 1 (1.6667 %)
low-mild 3 (5.0000 %)
Variance from outliers : 23.8520 % Variance is moderately inflated by outliers
nil
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment