Измерьте время выполнения в F #

Пожалуйста, отправьте код для отображения времени в F #. Я заметил, что вы можете измерить его из F # interactive с директивой #time, но я не знаю, как выполнить программу из FSI

Спасибо

Ответы

Ответ 1

Я бы просто использовал класс .NET Stopwatch.

let stopWatch = System.Diagnostics.Stopwatch.StartNew()
...
stopWatch.Stop()
printfn "%f" stopWatch.Elapsed.TotalMilliseconds

Ответ 2

Из msdn:

Сама по себе #time переключает отображение информации о производительности. Когда он включен, F # Interactive измеряет реальное время, время процессора и информация о сборе мусора для каждого раздела кода, который интерпретируется и выполняется.

Итак, чтобы проверить вашу функцию, вам нужно открыть интерактивную консоль F # и выполнить свою функцию в ней (один из способов сделать это - выбрать вашу функцию, щелкнуть правой кнопкой мыши и выбрать "Выполнить в интерактивном режиме" ) Затем выполните вызов вашей функции в интерактивном режиме, например:

//сначала определите свою функцию либо в интерактивной консоли, либо в документе:

let square x = x * x

// in interactive
#time
square 10
#time

Вы увидите, сколько времени в реальном времени и времени процессора было потрачено на вычисления и немного информации от сборщика мусора

Ответ 3

Проверьте функцию таймера в 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