【问题标题】:Profiling .net multithreaded application (Visual Studio 2008)分析 .net 多线程应用程序 (Visual Studio 2008)
【发布时间】:2012-03-25 20:39:21
【问题描述】:

我最近安装了(评估)Visual Studio 2008 TS,以便能够对应用程序进行一些分析。现在我才发现,当应用程序比“Hello World”更复杂时,我对(现实世界)分析知之甚少。

我的主要问题是集成调试器似乎增加了所有线程花费的时间,所以我得到了总运行时间的好几倍,而且某些功能(如睡眠)出现了好几次,我假设因为它们被几个调用线程。

现在我的问题是:我怎样才能使它更容易检查?我只对一个线程感兴趣(主要的线程完成所有工作),其他线程只是在等待某些东西,并且完全受到我的主线程运行时间的限制。 (虽然它们位于相同的模块中,有时调用相同的函数。)

有什么方法可以设置分析吗?有什么方法可以处理结果以使它们对我的场景更有意义? VS 2008 以外的任何其他解决方案(如 2010 或外部分析器)?

我现在正在使用 .net 3.5 下的 C# 进行检测(在我看来,结果比采样更好)。

【问题讨论】:

  • 您选择 2008 年而不是 2010 年有什么原因吗?后者配备了坚如磐石的剖面仪
  • JetBrains 也是一个非常好的分析器。 jetbrains.com/profiler
  • 你的目标是什么?是使用分析器还是加速?如果你想加快速度,there's a better way。剖析带有很多神话explained here
  • @Mika 该项目是为 2008 年设立的。没有其他原因。我想 2010 年应该很顺利 - 与旧版本不同(我在 C++ 6 -> 2003 上遇到问题)
  • @Ioannis 它支持多线程吗?我在这里查看了stackoverflow.com/questions/3927/…,并检查了大多数产品是否有关于 mt 的信息。似乎只有英特尔 VTune 可以做到这一点。 :) 但它不是 .net。

标签: c# multithreading performance profiling profiler


【解决方案1】:

Red Gate 的ANTS Performance Profiler 可以按线程过滤分析结果。

Working with the call tree 上的文档(特别是“更改调用树显示选项”部分)显示了您可以访问过滤器的位置的屏幕截图。

【讨论】:

  • 感谢所有回答!实际上,我最终重写了一些代码以防止启动不重要的线程,还将一些逻辑放入单独的函数中以更好地快速概览。工作正常。哦,除了内置的分析器,我什么都没做。时间太少了。
  • 链接现已过期。我认为这是新的:documentation.red-gate.com/display/APP8/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-12
  • 1970-01-01
  • 1970-01-01
  • 2012-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多