F# Interactive(以及REPL样式的工具)是性能分析的理想入口。选择一个代码块并将其直接发送到性能分析器,以获取性能分析报告,这比什么都容易。不幸的是,现有的性能分析器似乎没有REPL支持:您必须将性能分析器附加到进程或指定要进行性能分析的可执行文件或Web应用程序。
因此,我最终做的是将要进行性能分析的代码块包装在单元测试中,并对NUnit命令行会话执行性能分析。但是,这是否是我们目前在F#中可以做的最好方法呢?
F# Interactive(以及REPL样式的工具)是性能分析的理想入口。选择一个代码块并将其直接发送到性能分析器,以获取性能分析报告,这比什么都容易。不幸的是,现有的性能分析器似乎没有REPL支持:您必须将性能分析器附加到进程或指定要进行性能分析的可执行文件或Web应用程序。
因此,我最终做的是将要进行性能分析的代码块包装在单元测试中,并对NUnit命令行会话执行性能分析。但是,这是否是我们目前在F#中可以做的最好方法呢?
这是什么问题?
你知道 #time
命令吗?例如:
#time "on"
for i in 1..1000000 do
let r = f(i)
ignore r
此功能可使 F# 交互式输出如下:
--> Timing now on
Real: 00:00:00.000, CPU: 00:00:00.000, GC gen0: 0, gen1: 0, gen2: 0
无论如何,我认为将代码放入应用程序并针对该应用程序运行性能分析优于使用NUnit测试。 无论哪种方式,是的,将代码粘贴到新应用程序中并在发布模式下编译可能会多花费您大约30秒的时间。 但这是一个我愿意付出的代价,以获得Visual Studio提供的丰富的分析信息。 理想情况下,体验可能会更好,但我怀疑您今天(或明天)会找到任何REPL友好的性能分析工具。