具有命令行支持的 Win64 下 .NET 3.5 的可靠 CPU 分析器?
Posted
技术标签:
【中文标题】具有命令行支持的 Win64 下 .NET 3.5 的可靠 CPU 分析器?【英文标题】:Reliable CPU profiler for .NET 3.5 under Win64 with command line support? 【发布时间】:2009-03-13 21:22:47 【问题描述】:我正在寻找支持 .NET 的 CPU 分析器
高线程应用程序。 (双)四核 CPU。 采样分析。 64 位操作系统。 命令行 API。目前,我在使用大多数 .NET 分析器时遇到问题,尤其是,
YourKit 似乎不支持命令行。 dotTrace 3.1 在 64 位操作系统中崩溃。到目前为止,我还没有尝试过 Intel VTune。有什么开明的建议吗?
【问题讨论】:
【参考方案1】:线程往往会使大多数分析器感到困惑,因为他们不确定如何计算一个线程被阻塞等待另一个线程的时间以及一个线程等待工作的时间(如果您不使用线程池)。
根据我们的经验,您应该检查两个分析器: 1. Eqatech 有一个免费的分析器,可以为分析进行代码注入。它只适用于方法级别,但确实适用于 64 位,并且可以让您了解您的时间在哪里。 2. Red-Gate ANT 分析器是我们用于深入了解行级时序的最佳工具,如果您遇到线程在其大部分执行时间中相互阻塞等待的情况,这一点至关重要。
也就是说,如果您可以在没有用户界面的情况下运行测试,我强烈建议您设置一些 NUnit 性能测试,这样您就可以每次都以完全相同的方式快速轻松地重复它们。这样做你可以看到你的时间在哪里,即使使用方法级别分析器,建议和检查单个优化等。你会惊讶于如何从一个地方花费时间只是将它添加到另一个地方,因为线程最终会相互等待,因此拥有一个完全可重复的测试非常有用。
Eqatech 分析器会修改已编译的 IL,因此每当您重新运行该 IL 时,您都会获得一个新的性能跟踪文件,因此它应该适合您的命令行场景。我相信 ANT 也可以类似地工作。
最后,如果您的应用程序要在多个环境中使用,我绝对建议在单个处理器或仅超线程处理器上运行一些性能测试。当您对多核调优非常激进时,最终可能会增加足够的开销,从而导致死锁或只是在少量处理器上变慢。
【讨论】:
【参考方案2】:Redgate 有一个分析器,如果我没记错的话不能告诉你它是否有你需要的一切,但试试看? :)
【讨论】:
它不支持命令行(据我所知)。我真的需要这个功能来将分析器嵌入到持续集成过程中。【参考方案3】:-- 编辑 2 --- 另一种可能的选择(但需要更多努力)是使用 NProf 并调整源以去除 GUI?
AQTime 很好地支持 64 位操作系统上的命令行应用程序。
--- 编辑 ---
AQTime 也支持命令行 API。它具有启动项目、配置文件和自动退出的选项。我相信它会满足您的所有标准,并支持托管 + 本机代码库。
来自命令行的 AQTime 帮助:
“如您所见,使用命令行参数,您可以启动 AQtime,在其中加载项目,开始分析并在分析完成后关闭 AQtime。所有这些都使您能够将 AQtime 集成到您的自动化测试中应用程序。例如,在每个应用程序构建后运行这些测试,您可以轻松查看应用程序代码的更改是否导致性能瓶颈或内存使用效率低下。”
【讨论】:
我真的需要命令行支持。分析器与远程服务器上的 Windows 服务一起运行(通过持续集成)。 我刚刚查看了帮助 - 他们确实支持命令行 API :) 是的,但 AQTime 不支持在其分析模式下进行采样。不幸的是,这对我不起作用:-( 抱歉——我只是想把它扔掉。这是他们多次建议的东西 - 我一直希望他们能添加它,因为我同意,这是一个限制。 既然获得了源代码,那么只使用 nprof 并剥离 GUI 怎么样?【参考方案4】:你的目标是什么?
如果你想测量例程的执行时间和计数,我猜你需要一个分析器。
如果你想发现性能问题,然后你可以修复它们,那就是另外一个问题了。
我只是问,因为不知何故,他们是相同的想法变得流行。
对于后一个目标,尝试过的人都明白,研究线程调用堆栈的一些随机时间样本是发现性能问题的一种非常有效的方法。
我知道 Java 允许您同时停止所有线程并转储它们的调用堆栈。我认为 .net 开发环境会允许同样的事情。
如果没有,只需在 IDE 下运行它并一次停止一个线程,看看它是否在浪费任何周期。如果是,您只需修复它。重复直到找不到任何东西。
如果你对所有线程都这样做,那么至少你知道任何慢都不是由于任何给定线程的慢。您仍然可能遇到不必要的消息流量问题。这有点难以诊断。
【讨论】:
以上是关于具有命令行支持的 Win64 下 .NET 3.5 的可靠 CPU 分析器?的主要内容,如果未能解决你的问题,请参考以下文章
渗透基础——命令行下安装Microsoft .NET Framework
请给个win10 64位在命令提示符下运行net start的结果截图。
请问大佬有.NET Framework 3.5 离线安装包 64位软件免费百度云资源吗
windows7 64位旗舰版 安装sql server 2008 报.net framework 3.5 sp1 必须安装