我们应该如何测量 OCaml 顶层函数的执行时间?
问问题
1215 次
3 回答
11
正如@user3075773 所说,您可以使用Sys.time
. 但是请注意,它返回处理器时间(CPU 时间)。更多时候我想知道挂钟时间(经过的时间)。你可以从Unix.gettimeofday
:
let time f x =
let t = Unix.gettimeofday () in
let fx = f x in
Printf.printf "execution elapsed time: %f sec\n"
(Unix.gettimeofday () -. t);
fx
于 2014-12-16T18:07:54.107 回答
8
let time f x =
let t = Sys.time() in
let fx = f x in
Printf.printf "execution time: %fs\n" (Sys.time() -. t);
fx
适用于任何函数,它将打印函数在顶层运行需要多长时间。
于 2014-12-16T17:47:38.000 回答
2
像公认的答案一样使用gettimeofday
不是一个好主意,因为它对日历时间操作系统的调整很敏感(例如 via ntp
)。
如果您只想要 CPU 时间,那么使用Sys.time
就可以了。如果您想要挂钟时间,则应使用单调时间源。一个可用于mtime包中的 OCaml。
于 2017-09-07T06:17:40.207 回答