X-Git-Url: http://git.hcoop.net/jackhill/mal.git/blobdiff_plain/a77e2b31de9d1c1f5767e6bff56062f8b3c71211..c6f6f26efa5ba7e3b50173343cd40ddb4d451648:/perf.mal diff --git a/perf.mal b/perf.mal dissimilarity index 100% index e00d2efd..55f94092 100644 --- a/perf.mal +++ b/perf.mal @@ -1,15 +1,27 @@ -(if (= "make" *host-language*) - (defmacro! time - (fn* (exp) - `(let* [start_FIXME (time-secs) - ret_FIXME ~exp] - (do - (prn (str "Elapsed time: " (- (time-secs) start_FIXME) "000 msecs")) - ret_FIXME)))) - (defmacro! time - (fn* (exp) - `(let* [start_FIXME (time-ms) - ret_FIXME ~exp] - (do - (prn (str "Elapsed time: " (- (time-ms) start_FIXME) " msecs")) - ret_FIXME))))) +(defmacro! time + (fn* (exp) + `(let* (start_FIXME (time-ms) + ret_FIXME ~exp) + (do + (prn (str "Elapsed time: " (- (time-ms) start_FIXME) " msecs")) + ret_FIXME)))) + +(def! run-fn-for* + (fn* [fn max-ms acc-ms last-iters] + (let* [start (time-ms) + _ (fn) + elapsed (- (time-ms) start) + iters (+ 1 last-iters) + new-acc-ms (+ acc-ms elapsed)] + ;(do (prn "new-acc-ms:" new-acc-ms "iters:" iters)) + (if (>= new-acc-ms max-ms) + last-iters + (run-fn-for* fn max-ms new-acc-ms 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))))