【问题标题】:VS 2010 Performance ExplorerVS 2010 性能资源管理器
【发布时间】:2011-03-30 21:56:11
【问题描述】:
我开始在 VS 2010 中探索性能分析器,但很难发现它很有用。我意识到这很可能是因为我不熟悉该工具。
我正在寻找一种方法来识别最耗时的方法调用。很多时候,它只会将 ASP.NET 方法识别为最严重的违规者,例如 ProcessRequest 等,并且很难将其缩小到需要这么长时间的实际方法。
我只想确定我的代码中执行时间最长的调用。
任何指针将不胜感激。
谢谢!
【问题讨论】:
标签:
.net
performance
monitor
wizard
【解决方案1】:
我知道这是一个老问题,但我希望对您或其他人有所帮助:
从 Profiler 开始暂停。
这使您可以只分析您想要关注的单个页面,并消除应用程序启动、主页加载、导航到您想要分析的内容等方面的噪音。
- 从菜单中,选择分析 > Profiler > Start with Profiler Paused
- 然后在您的网站中导航到您要配置的页面之前
- 现在在 VS2010 的分析器页面上单击“恢复”开始分析
- 返回您的网站,单击链接或按钮等以加载您要配置的页面
- 等待它加载,然后回到 VS2010,点击“停止分析”
- 稍后将加载您的个人资料摘要。
使用“热路径”查找瓶颈
- 加载配置文件摘要后,将当前视图更改为调用树
- 点击“扩展热路径”(带有火焰图标的按钮)
- 这将向您展示最耗时的函数,以及导致该函数的调用堆栈
解读数据
- 第二列数字(“已用独占时间”)显示了在此特定函数(方法等)中花费的时间不包括它对其他函数的调用。
- 倒数第二列(“调用次数”)表示该特定函数被调用了多少次。
- 这两列的组合可以作为瓶颈所在的重要线索。
- 例如,您可能会发现 System.Linq.Queryable.[something] 函数占用了总时间的很大一部分并且被调用了 10 次或 100 次...如果因此,优化代码以简化代码以减少调用的总数可能会有所帮助...
- 从树上往回走会告诉您是哪个函数调用了这个瓶颈函数,然后又是哪个函数调用了那个函数等等。
据此,您至少应该能够确定性能瓶颈在哪里,以及它们发生的原因。通常,下一个挑战是想出一种更精细的方法来实现相同的结果,同时减少对耗时函数、数据库调用、IO 操作等的调用。
我希望这对您或遇到此(常见)问题的其他人有所帮助。