Measure time of execution in F#

后端 未结 4 775
走了就别回头了
走了就别回头了 2021-01-01 10:30

Please post code for displaying time in F#. I noticed that you can measure it from F# interactive with #time directive, but I don\'t know how to execute program from FSI

相关标签:
4条回答
  • 2021-01-01 11:07

    I would just use the .NET Stopwatch class.

    let stopWatch = System.Diagnostics.Stopwatch.StartNew()
    ...
    stopWatch.Stop()
    printfn "%f" stopWatch.Elapsed.TotalMilliseconds
    
    0 讨论(0)
  • 2021-01-01 11:17

    You could also create custom computation expression to hide actual measuring logic, e.g.:

    timer {
       // your code goes here
    }
    

    See more examples here: https://fsharpforfunandprofit.com/posts/computation-expressions-bind/

    0 讨论(0)
  • 2021-01-01 11:18

    Check out the timer function in the F Sharp Programming wikibook. It is defined like this:

    let duration f = 
        let timer = new System.Diagnostics.Stopwatch()
        timer.Start()
        let returnValue = f()
        printfn "Elapsed Time: %i" timer.ElapsedMilliseconds
        returnValue    
    

    Whilst being used like this:

    let sample() = System.Threading.Thread.Sleep(2)
    
    duration ( fun() -> sample() )
    // or
    duration sample
    
    0 讨论(0)
  • 2021-01-01 11:19

    From msdn:

    By itself, #time toggles whether to display performance information. When it is enabled, F# Interactive measures real time, CPU time, and garbage collection information for each section of code that is interpreted and executed.

    So to test you function you have to open F# interactive console and execute your function in it (one way to do it is to select your function, right click and chose Execute in Interactive) Then make a call to your function in Interactive like that for example:

    // define your function first either in interactive console or in your document:

    let square x = x * x
    
    // in interactive
    #time
    square 10
    #time
    

    You will see how much of real time and CPU time were spent on computation and a bit of information from garbage collector

    0 讨论(0)
提交回复
热议问题