2014-12-16 3 views

ответ

11

Как @ user3075773 говорит, вы можете использовать Sys.time. Однако обратите внимание, что он возвращает процессорное время (время процессора). Чаще всего я хочу узнать время настенных часов (прошедшее время). Вы можете получить это от 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

Использование gettimeofday как принятый ответ предполагает не очень хорошая идея, так как она чувствительна к календарному времени операционной системы КОРРЕКТИРОВКЕ (например, с помощью ntp).

Если вы просто хотите процессорное время, то с помощью Sys.time в порядке. Если вы хотите настенные часы, то следует использовать монотонный источник времени. Один из них доступен для OCaml в пакете mtime.