(以及一般的F#风格的工具)是性能分析的理想入口。有什么比选择代码块并将其直接发送给分析器更容易的,分析器将返回性能分析报告。不幸的是,现有的分析器看起来不支持REPL :您必须将一个分析器附加到进程,或者指定可执行文件或Web应用程序进行分析。
我最终要做的就是在单元测试中包装一个代码块以进行概要分析,然后针对NUnit命令行会话执行一个概要文件。但这是我们现在对F#所能做的最好的事情吗?
发布于 2010-07-12 15:33:08
问题是什么?
您知道#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友好的分析工具。
发布于 2010-07-13 04:29:16
您可以尝试使用profiler编程API来实现这一点。我还没有尝试过,但以下是ANTS分析器的说明:http://help.red-gate.com/help/ANTSProfiler3/0/en/Topics/AP_UsingTheAPI.html
我认为以下几点可能会成功:
中的fsi.exe
使用RedGate.Profiler.Api.Reset()/RedGate.Profiler.Api.TakeSnapshot()分析您要分析的代码,使用
DotTrace有(had?)类似的接口(CPUProfiler.Start()/.StopAndTakeSnapshot()),但我找不到最新版本的参考资料。
发布于 2010-07-13 05:36:09
但是这是我们现在对F#能做的最好的事情吗?
AFAIK,是的。不过,对于下一版本的F#或第三方产品来说,这是一个很好的想法!
https://stackoverflow.com/questions/3226521
复制相似问题