2012-01-30 51 views

Respuesta

15

Si desea medir el tiempo de ejecución de las funciones individuales, esta función de utilidad es muy útil en muchos casos:

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

donde f es cualquier función que toma x como el argumento y devuelve algo

4

Puede usar Sys.time(). Devuelve el tiempo del procesador, en segundos, utilizado por el programa desde el comienzo de la ejecución.

Fuente: http://caml.inria.fr/pub/docs/manual-ocaml/libref/Sys.html

+0

Sys.time() está dando en funcionamiento incorrecto. Dio 341.1 s para un programa pequeño. Cuando usé el comando de tiempo Unix, me dio solo 0.001 s. – priyanka

+0

Nunca he visto una falla como esta. ¿Puedes mostrar cómo se ve tu código? (Tal vez agréguela al final de su pregunta.) –

+0

Llamar a Sys.time() en un Toplevel devolverá la cantidad de tiempo que el subproceso Toplevel ha pasado ejecutando el código. – ben

11

En mi propia codificación, uso Unix.gettimeofday(), que devuelve un valor flotante con una resolución de mucho menos de un segundo. Se describe en el documentation for the OCaml Unix module. A pesar del nombre del módulo, esta función también funciona en Windows (y probablemente en casi todos los entornos que pueda encontrar).

Si vuelvo a escribir la respuesta de la almohadilla me sale el siguiente código:

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 
Cuestiones relacionadas