Ответ 1
Я бы просто использовал класс .NET Stopwatch.
let stopWatch = System.Diagnostics.Stopwatch.StartNew()
...
stopWatch.Stop()
printfn "%f" stopWatch.Elapsed.TotalMilliseconds
Пожалуйста, отправьте код для отображения времени в F #. Я заметил, что вы можете измерить его из F # interactive с директивой #time, но я не знаю, как выполнить программу из FSI
Спасибо
Я бы просто использовал класс .NET Stopwatch.
let stopWatch = System.Diagnostics.Stopwatch.StartNew()
...
stopWatch.Stop()
printfn "%f" stopWatch.Elapsed.TotalMilliseconds
Из msdn:
Сама по себе #time переключает отображение информации о производительности. Когда он включен, F # Interactive измеряет реальное время, время процессора и информация о сборе мусора для каждого раздела кода, который интерпретируется и выполняется.
Итак, чтобы проверить вашу функцию, вам нужно открыть интерактивную консоль F # и выполнить свою функцию в ней (один из способов сделать это - выбрать вашу функцию, щелкнуть правой кнопкой мыши и выбрать "Выполнить в интерактивном режиме" ) Затем выполните вызов вашей функции в интерактивном режиме, например:
//сначала определите свою функцию либо в интерактивной консоли, либо в документе:
let square x = x * x
// in interactive
#time
square 10
#time
Вы увидите, сколько времени в реальном времени и времени процессора было потрачено на вычисления и немного информации от сборщика мусора
Проверьте функцию таймера в F Sharp Programming wikibook. Он определяется следующим образом:
let duration f =
let timer = new System.Diagnostics.Stopwatch()
timer.Start()
let returnValue = f()
printfn "Elapsed Time: %i" timer.ElapsedMilliseconds
returnValue
При этом используется следующее:
let sample() = System.Threading.Thread.Sleep(2)
duration ( fun() -> sample() )
// or
duration sample