Skip to content

Instantly share code, notes, and snippets.

@v6ak
Created December 14, 2013 12:33
Show Gist options
  • Select an option

  • Save v6ak/7958676 to your computer and use it in GitHub Desktop.

Select an option

Save v6ak/7958676 to your computer and use it in GitHub Desktop.
Benchmark provedený doporučeným způsobem. Na každou variantu byla spuštena nová JVM. Verze Javu, OS i CPU jsou totožné s tímto benchmarkem: https://gist.github.com/v6ak/7958454
$ java -jar clojure-1.5.1.jar
Clojure 1.5.1
user=> (defn plus-2 [n] (+ 2 n)) ; stary a nudny zpusob
#'user/plus-2
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 144.448077 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 85.961736 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 77.58655 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 74.791031 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 85.75201 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 72.557372 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 74.790059 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 112.086831 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 209.580589 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 164.499997 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 59.495038 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 80.338643 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 59.887229 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 69.444292 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 65.722472 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 61.724655 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 59.339142 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 61.213285 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 58.498922 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 61.173483 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 62.666102 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 63.67512 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 59.582425 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 73.398688 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 59.530475 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 62.09603 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 59.507458 msecs"
nil
$ java -jar clojure-1.5.1.jar
Clojure 1.5.1
user=> (def plus-2 (partial + 2)) ; partial application
#'user/plus-2
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 976.76332 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 1316.97167 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 2314.865176 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 1131.901375 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 1846.62982 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 2007.712494 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 1124.485474 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 3625.088777 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 2722.371386 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 1180.351592 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 1142.251751 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 1307.761559 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 1637.000537 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 1136.541862 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 1531.431115 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 1144.958374 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 1151.803135 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 1151.652464 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 1134.792972 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 1136.704638 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 1161.373653 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 1132.534593 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 3350.412636 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 1442.551617 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 1140.242148 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 1147.000237 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 1123.524147 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 1159.474978 msecs"
nil
$ java -jar clojure-1.5.1.jar
Clojure 1.5.1
user=> (def plus-2 (comp inc inc)) ; kompozice funkci
#'user/plus-2
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 188.237386 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 212.536316 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 214.066971 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 146.111091 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 156.772069 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 151.308148 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 144.063704 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 150.164633 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 156.103215 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 147.358636 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 148.123984 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 152.917462 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 156.534827 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 146.082215 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 157.693227 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 141.635575 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 143.915909 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 146.899567 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 140.979618 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 251.719814 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 354.630542 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 180.478516 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 150.146061 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 159.173804 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 142.071578 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 144.452211 msecs"
nil
user=> (time (dotimes [n 10000000] (plus-2 n)))
"Elapsed time: 145.074579 msecs"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment