Измерьте время выполнения в F # - PullRequest
31 голосов
/ 25 декабря 2010

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

Спасибо

Ответы [ 3 ]

48 голосов
/ 25 декабря 2010

Я бы просто использовал класс .NET Секундомер.

let stopWatch = System.Diagnostics.Stopwatch.StartNew()
...
stopWatch.Stop()
printfn "%f" stopWatch.Elapsed.TotalMilliseconds
29 голосов
/ 23 ноября 2013

Из MSDN:

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

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

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

let square x = x * x

// in interactive
#time
square 10
#time

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

21 голосов
/ 10 января 2011

Проверьте функцию таймера в F Sharp Программировании викибук . Это определяется так:

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
...