Can anyone recommend a performance profiling tool with good F# support?
I’ve been using Visual Studio 2010 profiler but I’ve found a few issues when using F#. It feels more like I’m profiling the byte code after reflection than the original F#.
For example when profiling the following slightly contrived example:
let Add a b =
a + b
let Add1 = Add 1
let rec MultiAdd count =
match count with
| 1 -> 1
| _ -> (Add1 1) + (MultiAdd (count - 1))
MultiAdd 10000 |> ignore
I get the following call tree:
When I view Microsoft.FSharp.Core.FSharpFunc`2.Invoke(0) in the Function Details I see:
I understand that what I seeing is based on the underlying implementation of the compiled code and although I can follow it, it’s hard going.
Does anyone have experience of using other profiling tools with F# and do they do a better job of mapping to the original F# code?