1 ;; Mesure performances.
3 (load-file "../lib/load-file-once.mal")
4 (load-file-once "../lib/trivial.mal") ; gensym inc
6 ;; Evaluate an expression, but report the time spent
11 `(let* (~start (time-ms)
14 (println "Elapsed time:" (- (time-ms) ~start) "msecs")
17 ;; Count evaluations of a function during a given time frame.
21 run-fn-for* (fn* [fn max-ms acc-ms last-iters]
22 (let* [start (time-ms)
24 elapsed (- (time-ms) start)
25 iters (inc last-iters)
26 new-acc-ms (+ acc-ms elapsed)]
27 ;; (do (prn "new-acc-ms:" new-acc-ms "iters:" iters))
28 (if (>= new-acc-ms max-ms)
30 (run-fn-for* fn max-ms new-acc-ms iters))))
34 ;; fn : function without parameters
35 ;; max-secs : number (seconds)
36 ;; return : number (iterations)
39 (run-fn-for* fn 1000 0 0)
41 (run-fn-for* fn (* 1000 max-secs) 0 0)))))