OCamlでプロファイリング
30分プログラム、その585。OCamlのプロファラを試してみよう。
マニュアル曰く、実行したときに何回関数が呼ばれたか、何回条件分岐が行なわれたかを記録できるらしい。どうも、各関数に何秒かかったか、などの情報は取れないらしい。
1.コンパイル
とりあえず、適当なコードを書く。
let rec fact = function 0 -> 1 | n -> n * fact (n - 1) let _ = Printf.printf "%d\n" (fact 10)
ocamlcpでコンパイル。
$ ls fact.ml $ ocamlcp -o fact fact.ml # factができてる $ ls fact* fact.cmi fact.cmo fact.ml
2.実行
普通に実行する。
$ ./fact
3628800
すると、ocamlprof.dumpができてる。
$ ls
fact* fact.cmi fact.cmo fact.ml ocamlprof.dump
3.表示
最後に、ocamlprofで結果を表示してやる。
$ ocamlprof fact.ml let rec fact = function 0 -> (* 1 *) 1 | n -> (* 10 *) n * fact (n - 1) let _ = Printf.printf "%d\n" (fact 10)