.NET多线程应用程序分析(Visual Studio 2008)

4
我最近安装了Visual Studio 2008 TS(试用版),以便能够对一个应用程序进行一些分析。现在我才发现,当应用程序比“Hello World”更复杂时,我所知道的关于实际分析的知识是如此之少。
我的主要问题是,集成调试器似乎会将所有线程的时间累加起来,因此我得到的总运行时间是几倍于实际值的,而某些函数(如sleep)则会出现多次,我认为这是因为它们被多个线程调用。
现在我的问题是:如何使这更容易检查?我只对一个线程感兴趣(主线程执行所有工作),其他线程只是等待某些东西,并且完全受到我的主线程运行时间的限制。(它们在相同的模块中,有时会调用相同的函数。)
是否有任何设置分析的方法?是否有任何处理结果的方法,以使其对我的情况更有意义?除了VS 2008(如2010或外部分析器)之外,是否还有其他解决方案?
我目前正在使用C#下的.net 3.5进行仪器化(在我看来比抽样给出了更好的结果)。

1
你为什么选择 2008 而不是 2010?后者带有一个非常稳定的分析器,有什么原因吗? - Mehdi LAMRANI
1
JetBrains也制作了一个非常好的分析器。http://www.jetbrains.com/profiler/ - Ioannis Karadimas
@Ioannis 它支持多线程吗?我在这里看了一下 https://dev59.com/FnVD5IYBdhLWcg3wXaYd 并且检查了大多数产品是否有关于mt的说明。好像只有英特尔VTune可以做到。 :) 但它不是.net。 - Andreas Reiff
@Mike 是的,我想要提高性能。我一开始没有使用分析工具,进展不太顺利。应用程序过于复杂,而且不是我的代码,我只能在优化明显的点(如Sleep、循环、硬盘...)方面发挥所长。 - Andreas Reiff
@Andreas 当然可以。我已经广泛使用它来成功地改善了一个使用后台工作程序的特定 MT 应用程序的性能。 - Ioannis Karadimas
显示剩余4条评论
1个回答

5

来自Red Gate的ANTS Performance Profiler可以按线程对分析结果进行过滤。

使用调用树的文档(特别是“更改调用树显示选项”部分)展示了一个截图,显示您可以访问过滤器的位置。


感谢所有的回答! 实际上,我最终重写了一些代码,以防止不必要的线程启动,并将一些逻辑放入单独的函数中,以更好地快速概述。 效果还不错。 哦,我没有时间测试除内置分析器之外的任何东西。 - Andreas Reiff
链接已经过期。我认为这是新链接:http://documentation.red-gate.com/display/APP8/Working+with+the+call+tree - ijb109

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接