2012-01-30 17 views

回答

15

如果你要测量的各个功能的执行时间,这种效用函数是有用的在许多情况下:

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

其中f是需要x作为参数的任何功能,返回一些东西

4

您可以使用Sys.time()。它返回自执行开始以来程序使用的处理器时间,以秒为单位。

来源:http://caml.inria.fr/pub/docs/manual-ocaml/libref/Sys.html

+0

Sys.time()是给不正确运行。它给了一个小程序341.1秒。当我使用unix时间命令时,它只给出了0.001秒。 – priyanka 2012-02-01 06:54:32

+0

我从来没有见过这样的失败。你可以展示你的代码是什么样的? (也许在问题结束时添加它。) – 2012-02-01 07:18:04

+0

在Toplevel中调用Sys.time()将返回Toplevel线程花费运行代码的时间量。 – ben 2012-02-01 22:30:15

11

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

如果我重写垫的答案,我得到了下面的代码:

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