2014-12-16 3 views

답변

11

@ user3075773에 따르면 Sys.time을 사용할 수 있습니다. 그러나 프로세서 시간 (CPU 시간)을 반환합니다. 더 자주 벽시계 시간 (경과 시간)을 알고 싶습니다. 당신은 Unix.gettimeofday에서이를 얻을 수 있습니다 :

let time f x = 
    let t = Unix.gettimeofday() in 
    let fx = f x in 
    Printf.printf "execution elapsed time: %f sec\n" 
     (Unix.gettimeofday() -. t); 
    fx 
+0

이것은 중요한 구별입니다. 그것을 강조 주셔서 감사합니다. 어떤 사람은 어느 쪽인가의 시간을 원할지도 모르지만, 그들이 다르다면 분명히 그들을 섞어 놓고 싶지는 않습니다. – Mars

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

모든 기능과 함께 작동하며, 기능이 최상위에서 실행되는 데 걸린 시간을 인쇄합니다.

1

은 (예를 들어, ntp를 통해) 시간 운영 체제 adjustements을 달력에 민감한으로 좋은 생각이 아니다 제안 허용 대답처럼 gettimeofday 사용.

그냥 CPU 시간을 원하면 Sys.time을 사용하는 것이 좋습니다. 벽시계 시간을 원한다면, 단조로운 시간 소스를 사용해야합니다. 하나는 mtime 패키지의 OCaml에서 사용할 수 있습니다.

관련 문제