6

我检查了这里提到的一些性能分析器。但...

  • EQATec 对我不起作用,因为我有很多要分析的程序集,并且它对要分析的程序集有限制。获得免费许可证有多麻烦?如果有人向我保证 EQATec 可以同时分析托管和非托管代码,我会选择它
  • SlimTune 仅分析了我的托管代码,即使我将“Profile native functions”设置为“True”
  • XTE Profiler 不再免费
  • 我们有一份我们之前购买的 AQTime 6,但它似乎不支持 .NET 4.0 应用程序(它甚至无法启动我的应用程序)
  • 我们使用 Visual Studio 2010 Professional SP1,所以我们没有 Visual Studio 分析器
  • 我尝试了“穷人的分析”(多次停止程序并查看它的位置),但我得到的结果太随机了,而且我更习惯于传统的分析

(我已经花了一整天的时间来解决这个问题,对不起,如果我太消极了)

更新:在我清理我的解决方案后,再次构建它并检查所有调试信息(.pdb)是否已复制到与可执行文件相同的目录中,我再次尝试了 AQTime,它成功了!它向我显示了托管和非托管代码的常规计时信息,因此我的问题得到了解决。但是,我使用的是付费分析器,所以在我查看 xperf 或有人提出其他问题之前,这个问题将保持开放

4

5 回答 5

3

AQTime 有他们最新分析器的免费版本 (http://smartbear.com/products/free-tools/aqtime-standard/) 它支持 .Net 4,但我怀疑它可以做原生和托管的混合配置文件。

如果您真的很认真,您可能会查看 Microsoft xperf 工具 (http://msdn.microsoft.com/en-us/performance)。它们有一个陡峭的学习曲线,但它们是免费的,我怀疑任何商业分析器都可以做 xperf 可以做的事情(仪器在操作系统中,而不是在单独的进程中,因此需要 Vista、win7 或 win2K8)。我正在等待有人围绕它编写一个不错的 GUI,但这需要很长时间...... ;-)

xperf 将分析您的本机代码,您可以将符号加载到结果查看器中。我不认为它会下降到每行粒度。它有一个 .Net CLR Provider (http://msdn.microsoft.com/en-us/library/dd264809.aspx)。xperf 很酷的一点是,它还可以显示可能影响您的性能的其他进程(您可以随意将其关闭,只分析您自己的进程)。例如:由于 USB 驱动程序、病毒扫描程序或防火墙软件编写不当,它能够揭示您的 IO 速度很慢。传统的分析器只会显示缓慢的 IO,导致您专注于非瓶颈。

顺便说一句,还有一个 ICorProfilerCallback 接口可以用来编写自己的分析器 (http://msdn.microsoft.com/en-us/library/s5ec0es1.aspx)。

于 2011-06-29T22:07:28.047 回答
1

我很确定你的问题的答案是“没有”。

在几个月前比较一大堆 .NET 分析器时,我发现只有极少数可以混合 .NET/native 分析:AQTime(599 美元)和 Glowcode(499 美元)可以。或者他们说——我没试过。

EQATEC、Visual Studio、ANTS、Jetbrains dotTrace、Yourkit、XteProfiler、Slimtune 等不能,所以我怀疑你会很快找到一个免费的分析器。

于 2011-07-09T20:36:31.923 回答
0

OP:“如果有人向我保证 XXXX 可以同时分析托管和非托管代码,我会选择它”

我们的C# Timing Profiler不依赖于 C# 代码的编译方式(托管或非托管,或混合)。它应该可以正常工作。

于 2011-06-28T22:21:32.697 回答
0

Microsoft 的CLR Profiler 4是免费的。你试过了吗?

您在探查器的非托管部分中寻找什么?

于 2011-06-28T22:33:17.023 回答
0

您对 EQATEC Profiler 的担忧很容易解决:它只进行托管 .NET 分析,而不是任何类型的非托管分析。

定价所示,实际的分析功能仅在一次可以分析的组件数量上有所不同。因此,0 美元的免费版可以像 999 美元的企业版一样配置单一组件的 WP7 应用程序。对于额外的价格标签,您可以一次分析更多组件和一些次要功能,如打印、比较、最小/最大等。

据说通过试用EQATEC Analytics获得免费许可证很容易。获得无限制的企业许可证是一个非常受欢迎的选择,许多人在短短几个小时内就实现了。获得一个免费的 99 美元标准许可证不应该超过 10 分钟左右,如果你很好的话。请注意:我在 EQATEC 工作,实际上我们每天都会分发这么多免费许可证,这几乎成了一种负担,因为每个都是手动处理的(是的,认真的!)所以这个特殊的提议可能不会永远持续下去。

于 2011-06-29T01:22:55.450 回答