首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可靠的CPU剖析器为.NET 3.5在Win64下的命令行支持?

可靠的CPU剖析器为.NET 3.5在Win64下的命令行支持?
EN

Stack Overflow用户
提问于 2009-03-13 21:22:47
回答 4查看 1.6K关注 0票数 2

我正在寻找一个用于.NET支持的CPU分析器。

  • 大量线程化的应用程序。
  • (双)四核CPU。
  • 抽样分析。
  • 64位操作系统
  • 命令行API。

目前,我遇到了大多数.NET分析器的麻烦,特别是,

  • YourKit似乎不支持命令行。
  • dotTrace 3.1正在与64位操作系统崩溃。

到目前为止,我还没有尝试过英特尔的VTune。有什么开明的建议吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-04-18 15:37:00

线程倾向于混淆大多数分析器,因为它们不确定如何计算一个线程被阻塞、另一个线程等待工作的时间(如果您没有使用线程池)。

在我们的经验中,应该检查两个分析器: 1. 埃卡特奇有一个免费的分析器,用于分析代码注入。它只工作到方法级别,但在64位上工作,可以让您了解您的时间流向。2.红门蚂蚁分析器是我们用来钻入行级时间的最好工具,如果有线程被阻塞,等待执行时间的很大一部分,这是至关重要的。

尽管如此,如果您可以在没有用户界面的情况下运行测试,那么我强烈建议您设置一些NUnit性能测试,以便每次都能以完全相同的方式快速、轻松地重复它们。通过使用方法级分析器,您可以看到自己的时间在哪里,提出并检查单个优化,等等。您会惊讶于为什么从一个地方花时间只会将时间添加到另一个地方,因为线程最终会互相等待,所以进行一个完全可重复的测试非常有用。

Eqatech分析器修改编译后的IL,因此每当您重新运行该IL时,您就会得到一个新的性能跟踪文件,因此它应该适合您的命令行场景。我相信蚂蚁也能做类似的工作。

最后,如果您的应用程序要在多个环境中使用,我肯定会建议在单处理器或仅在超级线程的处理器上运行一些性能测试。当您非常积极地对多核进行调优时,您最终可能会增加足够的开销,从而导致死锁或在少量处理器上缓慢运行。

票数 3
EN

Stack Overflow用户

发布于 2009-03-13 21:29:11

红门有一个分析器,如果我没记错的话,不能告诉你它是否有你所需要的,但是试一试?)

票数 1
EN

Stack Overflow用户

发布于 2009-03-13 21:31:44

-编辑2-另一种可能的选择(但需要更多的努力)是使用NProf并调整源代码以去掉GUI?

AQTime很好地支持64位操作系统上的命令行应用程序。

编辑

AQTime也支持命令行API。它有自动启动项目、配置文件和退出的选项。我相信它将满足您的所有条件,并支持托管+本机代码库。

来自命令行上的AQTime帮助:

“如您所见,使用命令行参数可以启动AQtime、在其中加载项目、开始分析并在分析完成后关闭AQtime。所有这些都使您能够将AQtime集成到应用程序的自动测试中。例如,在每个应用程序构建之后运行这些测试,您可以很容易地查看对应用程序代码的更改是否会导致性能瓶颈或内存的低效使用。”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/644672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档