OCaml:测量顶层的执行时间

时间:2014-12-16 17:06:09

标签: ocaml ocaml-toplevel

我们应该如何衡量OCaml toplevel中函数的执行时间?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:7)

let time f x =
    let t = Sys.time() in
    let fx = f x in
    Printf.printf "execution time: %fs\n" (Sys.time() -. t);
    fx

使用任何函数,它将打印函数在顶层运行多长时间。

答案 2 :(得分:1)

使用gettimeofday就像接受的答案所示,这不是一个好主意,因为它对日历时间操作系统调整很敏感(例如通过ntp)。

如果您只想要CPU时间,那么使用Sys.time就可以了。如果你想要挂钟时间,那么应该使用单调时间源。一个可用于mtime包中的OCaml。