aboutsummaryrefslogtreecommitdiff
path: root/perf.mal
diff options
context:
space:
mode:
authorMiki Tebeka <miki.tebeka@gmail.com>2015-03-01 06:12:42 +0200
committerMiki Tebeka <miki.tebeka@gmail.com>2015-03-01 06:12:42 +0200
commit9fb199e2cb2cf44cd61c2a226193a70f6013aadc (patch)
tree325a2a8e33e3e8d18217d10854152cab82ac8b61 /perf.mal
parent49916f9402e30a5277146355be878b32ec30f46d (diff)
parent2cb013877c4ed41d245ce7c5525405c4833c503d (diff)
downloadmal-9fb199e2cb2cf44cd61c2a226193a70f6013aadc.tar.gz
mal-9fb199e2cb2cf44cd61c2a226193a70f6013aadc.zip
Merge branch 'master' of https://github.com/kanaka/mal
Diffstat (limited to 'perf.mal')
-rw-r--r--perf.mal20
1 files changed, 20 insertions, 0 deletions
diff --git a/perf.mal b/perf.mal
index 94da2ff..83bbc0d 100644
--- a/perf.mal
+++ b/perf.mal
@@ -5,3 +5,23 @@
(do
(prn (str "Elapsed time: " (- (time-ms) start_FIXME) " msecs"))
ret_FIXME))))
+
+(def! run-fn-for*
+ (fn* [fn max-ms acc-ms iters]
+ (let* [start (time-ms)
+ _ (fn)
+ elapsed (- (time-ms) start)
+ new-iters (+ 1 iters)
+ new-acc-ms (+ acc-ms elapsed)]
+ ;(do (prn "here:" new-acc-ms "/" max-ms "iters:" new-iters) )
+ (if (>= new-acc-ms max-ms)
+ (/ (* max-ms iters) new-acc-ms)
+ (run-fn-for* fn max-ms new-acc-ms new-iters)))))
+
+(def! run-fn-for
+ (fn* [fn max-secs]
+ (do
+ ;; Warm it up first
+ (run-fn-for* fn 1000 0 0)
+ ;; Now do the test
+ (/ (run-fn-for* fn (* 1000 max-secs) 0 0) 3))))