Skip to content

Instantly share code, notes, and snippets.

@timsgardner
Created December 27, 2014 21:28
Show Gist options
  • Save timsgardner/4c5bd1c685b26c8d5a03 to your computer and use it in GitHub Desktop.
Save timsgardner/4c5bd1c685b26c8d5a03 to your computer and use it in GitHub Desktop.
invocation time
(defn time-it
"Signature slightly awkward to resemble that of time-it-mac"
([f] (time-it f 1))
([n f]
(. clojure.lang.RT (StartStopwatch))
(dotimes [_ n] (f))
(let [t (. clojure.lang.RT StopStopwatch)]
(/ t n))))
(defmacro time-it-mac
([n & body]
`(do
(. clojure.lang.RT (StartStopwatch))
(dotimes [_# ~n] ~@body)
(let [t# (. clojure.lang.RT StopStopwatch)]
(/ t# ~n)))))
(def bla :bla)
(defn simpler []
bla)
(let [f simpler]
(time-it-mac 100000
(f)))
(time-it-mac 100000
bla)
@timsgardner
Copy link
Author

first benchmark: 1/100000
second benchmark: 1/20000
derp

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment