Pet*_*ans 40 benchmarking clojure
我知道我可以花时间来评估一个功能,可以使用时间函数/宏在屏幕/标准输出上打印出来.
时间宏返回已计算函数的值,这使得内联使用它非常棒.但是我想在特定情况下自动测量运行时.
是否有一个函数可以返回某个库中的已用时间来帮助进行此基准测试?
G__*_*G__ 31
如果只是想要以编程方式捕获字符串,则可以在使用时间之前将*out*绑定到其他内容.
user=> (def x (with-out-str (time (+ 2 2))))
#'user/x
user=> x
"\"Elapsed time: 0.119 msecs\"\n"
Run Code Online (Sandbox Code Playgroud)
如果您想要更多地控制格式,那么您可以使用Java的系统时间方法创建自己的时间版本,这就是宏在时间范围内使用的时间:
user => (macroexpand '(time (+ 2 2)))
(let* [start__4197__auto__ (. java.lang.System (clojure.core/nanoTime))
ret__4198__auto__ (+ 2 2)]
(clojure.core/prn (clojure.core/str "Elapsed time: " (clojure.core//
(clojure.core/double
(clojure.core/- (. java.lang.System (clojure.core/nanoTime))
start__4197__auto__)) 1000000.0) " msecs"))
ret__4198__auto__)
Run Code Online (Sandbox Code Playgroud)
采用这种基本结构,用你喜欢的任何报告机制替换对prn的调用.
归档时间: |
|
查看次数: |
11249 次 |
最近记录: |