ソフトウェア技法 2016年度 TAのページ

このページには演習の補足情報などを掲示しています.

ベンチマーク関数 (実行時間を計測する関数)

末尾再帰に関する演習や講義の最後に行われる一部のミニプロジェクトでは, 実行時間を計測する必要があります. 実行時間を計測する関数は以下の bench 関数をコピーして利用してください.

(* ベンチマーク用の関数. 実行時間の計測にはこれをコピーして利用してください *)
let bench f =
  let t = Sys.time () in
  ignore (f ()); Printf.printf "Time Elapsed: %f sec\n" (Sys.time () -. t)

(* ベンチマーク対象の関数例; たらい回し関数 (竹内関数) *)
let rec tarai x y z =
  if x <= y then y else tarai (tarai (x - 1) y z) (tarai (y - 1) z x) (tarai (z -1) x y)
;;

(* 利用例 *)
bench (fun () -> tarai 12 6 0);;
bench (fun () -> tarai 13 7 0);;