2012-01-30 127 views
8

私のコードがocamlで撮影した時間を調べるにはどうすればよいですか?それを測定する関数はありますか?Ocamlの実行時間

答えて

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 timeコマンドを使用したとき、それはわずか0.001秒でした。 – priyanka

+0

私はこのような失敗を見たことがない。あなたのコードはどのように見えるか? –

+0

ToplevelでSys.time()を呼び出すと、Toplevelスレッドがコードの実行に費やした時間が返されます。 – ben

11

私自身のコーディングでは、を使用します。これは、float値を1秒よりずっと短く返します。それは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