2011-03-30 92 views
5

我开始探索VS 2010中的性能分析器,并且很难发现它很有用。我意识到这很可能是因为我不熟悉这个工具。VS 2010 Performance Explorer

我在寻找的是一种识别最耗时的方法调用的方法。很多时候,它只会将ASP.NET方法识别为最糟糕的犯罪者,如ProcessRequest等,并且很难将其缩小到实际采用这种方法的方法。

我想识别我的代码中正在执行的时间最长的调用。

任何指针,将不胜感激。 谢谢!

回答

2

我知道这是一个老问题,但我希望能帮助你或他人的一些建议:

使用Profiler开始暂停。

这可以让你只配置文件要注重单页,并剪下从应用噪声发射了,家里页面加载,导航至要分析一下,等

  • 从菜单中,选择分析>探查>使用Profiler暂停开始
  • 然后在你的网站上的点导航只是之前,您希望页面上探查页面点击“恢复”来分析在VS2010
  • 现在开始分析
  • 回到你的网站,点击链接或按钮等来加载要分析
  • 等待它加载,然后回到在VS2010的页面,点击“停止分析”
  • 片刻您的个人资料后,总结会加载。

发现使用“热路径”

  • 一旦个人资料摘要已加载的瓶颈,改变当前视图调用树
  • 点击“展开热路径”(钮​​带火焰图标)
  • 这会告诉你最糟糕的时间消耗功能,以及导致它的调用堆栈

解读数据

  • 的附图中的第二列(“经过的独占时间”)显示了在这个特定的功能(方法等)中花费的时间不包括调用它对其它功能。
  • 倒数第二列('呼叫次数')表示这个特定函数被调用了多少次。
  • 这两列的组合可以说明瓶颈在哪里。
  • 例如,你可能会发现一个System.Linq.Queryable。[东西]功能占用了整个时间的大部分时间被称为10或100的倍数......如果是这样,可能需要优化代码来简化它,这样可以减少总体呼叫次数。 ..
  • 回到树上会告诉你哪个函数将这些调用引入这个瓶颈函数,然后调用哪个函数调用该函数等等。

由此你应该至少能够确定性能瓶颈在哪里以及它们为什么发生。通常情况下,下一个挑战是想出一个更加精细的方式来实现相同的结果,而不需要耗费时间的函数,数据库调用,IO操作等。

我希望这有助于您作为初学者或其他遇到这个(普通)问题的人。