Время работы в Окамле - PullRequest
       6

Время работы в Окамле

11 голосов
/ 30 января 2012

Как определить количество времени, которое мой код занял в ocaml? Есть ли функции для измерения этого?

Ответы [ 3 ]

18 голосов
/ 30 января 2012

Если вы хотите измерить время выполнения отдельных функций, эта вспомогательная функция полезна во многих случаях:

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

, где f - любая функция, которая принимает x в качестве аргумента и возвращает что-то.

14 голосов
/ 30 января 2012

В моем собственном кодировании я использую Unix.gettimeofday (), который возвращает значение с плавающей запятой с разрешением, значительно меньшим одной секунды. Это описано в документации для модуля OCaml Unix . Несмотря на название модуля, эта функция также работает в Windows (и, вероятно, почти во всех средах, с которыми вы можете столкнуться).

Если я переписываю ответ планшета, я получаю следующий код:

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
4 голосов
/ 30 января 2012

Вы можете использовать Sys.time ().Возвращает время процессора в секундах, использованное программой с начала выполнения.

Источник: http://caml.inria.fr/pub/docs/manual-ocaml/libref/Sys.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...