web-dev-qa-db-ja.com

F#で実行時間を測定する

F#で時間を表示するためのコードを投稿してください。 #timeディレクティブを使用してF#インタラクティブから測定できることに気付きましたが、FSIからプログラムを実行する方法がわかりません

ありがとう

33
nanek

.NETストップウォッチクラスを使用します。

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

Msdnから:

#timeは、それ自体でパフォーマンス情報を表示するかどうかを切り替えます。有効にすると、F#Interactiveは、解釈および実行されるコードの各セクションのリアルタイム、CPU時間、およびガベージコレクション情報を測定します。

したがって、関数をテストするには、F#インタラクティブコンソールを開いて関数を実行する必要があります(関数を選択し、右クリックして[インタラクティブで実行]を選択することです)次に、次のようにインタラクティブで関数を呼び出します。例:

//最初にインタラクティブコンソールまたはドキュメントで関数を定義します。

let square x = x * x

// in interactive
#time
square 10
#time

リアルタイムとCPU時間のどれだけが計算に費やされたか、ガベージコレクターからの情報が少しわかります。

29
PompolutZ

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
21
David White