在Ocaml的运行时间

pri*_*nka 11 time ocaml

如何计算我的代码在ocaml中所花费的时间?有什么功能来衡量吗?

pad*_*pad 18

如果要测量单个函数的执行时间,此实用程序函数在许多情况下都很有用:

let time f x =
    let t = Sys.time() in
    let fx = f x in
    Printf.printf "Execution time: %fs\n" (Sys.time() -. t);
    fx
Run Code Online (Sandbox Code Playgroud)

where f是什么函数,它x作为参数并返回一些东西.


Jef*_*eld 16

在我自己的编码中,我使用Unix.gettimeofday (),返回一个浮点值,其分辨率远小于一秒.它在OCaml Unix模块文档中有所描述.尽管该模块的名称,该功能也适用于Windows(可能几乎在您可能遇到的所有环境中).

如果我重写pad的答案,我会得到以下代码:

let time f x =
    let start = Unix.gettimeofday ()
    in let res = f x
    in let stop = Unix.gettimeofday ()
    in let () = Printf.printf "Execution time: %fs\n%!" (stop -. start)
    in
       res
Run Code Online (Sandbox Code Playgroud)