Instantly share code, notes, and snippets.

Embed
What would you like to do?
Code:
(ns vararg-bench.core
(:require [criterium.core :refer [quick-bench]])
(:gen-class))
(defn varargs [arg1 & [arg2 arg3]]
42)
(defn multi-arity
([arg1] 42)
([arg1 arg2 arg3] 42))
(defn -main [& args]
(println "Multi 1 arg")
(quick-bench
(multi-arity 0))
(println "Multi 3 args")
(quick-bench
(multi-arity 0 1 2))
(println "Varargs 3 args")
(quick-bench
(varargs 0 1 2))
(println "Varargs 1 arg")
(quick-bench
(varargs 0))
(println "done")
)
Results:
Multi 1 arg
WARNING: Final GC required 11.96553987877032 % of runtime
Evaluation count : 178108254 in 6 samples of 29684709 calls.
Execution time mean : 1.705851 ns
Execution time std-deviation : 0.374609 ns
Execution time lower quantile : 1.440546 ns ( 2.5%)
Execution time upper quantile : 2.217680 ns (97.5%)
Overhead used : 2.025919 ns
Multi 3 args
WARNING: Final GC required 8.825457788652507 % of runtime
Evaluation count : 88559226 in 6 samples of 14759871 calls.
Execution time mean : 4.772424 ns
Execution time std-deviation : 0.193746 ns
Execution time lower quantile : 4.575359 ns ( 2.5%)
Execution time upper quantile : 5.033764 ns (97.5%)
Overhead used : 2.025919 ns
Varargs 3 args
WARNING: Final GC required 5.84196898525402 % of runtime
Evaluation count : 2284332 in 6 samples of 380722 calls.
Execution time mean : 275.363710 ns
Execution time std-deviation : 10.114462 ns
Execution time lower quantile : 261.470808 ns ( 2.5%)
Execution time upper quantile : 286.310783 ns (97.5%)
Overhead used : 2.025919 ns
Varargs 1 arg
WARNING: Final GC required 9.368379907246801 % of runtime
Evaluation count : 50935794 in 6 samples of 8489299 calls.
Execution time mean : 10.233299 ns
Execution time std-deviation : 0.621089 ns
Execution time lower quantile : 9.613323 ns ( 2.5%)
Execution time upper quantile : 11.154822 ns (97.5%)
Overhead used : 2.025919 ns
Found 1 outliers in 6 samples (16.6667 %)
low-severe 1 (16.6667 %)
Variance from outliers : 14.7029 % Variance is moderately inflated by outliers
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment