我过去曾成功使用过基于内置采样的VS 2010性能分析器。有时,代码窗口中突出显示的代码有几行。这可能是由于代码优化,据说分析器不能很好地处理。除此之外,它对我有用(与仪器变体相反)
然而,这一次结果是完全错误的。例如,我的代码中有一行(调用另一个导致数据库查询的方法)占总运行时间的40%,而我在&#中找到了这一行34;注释掉代码二分法"方法
VS2012的采样分析器(和VS2010,我仔细检查过)然而告诉我方法帐户类似于1%(含),即它甚至没有显示在报告摘要中,我必须搜索详细信息表的底部才能找到它。为了以防万一,我提高了采样频率,但无济于事。
什么可以把探测器扔到这么远的地方?
我正在分析基于.net 3.5的项目,有相当数量的dll。我试过在“发布”和“发布”中进行分析。和'调试'模式。没有实质性差异。
答案 0 :(得分:2)
您处于“CPU性能分析”模式吗? 在那种模式下,它对I / O是盲目的,我假设数据库查询将执行I / O.
这就是我依赖this old but surprisingly effective technique的原因。 没有这样的警告。
答案 1 :(得分:1)
感谢MikeDunlavey,
你的回答是accurate,花在I / O上的时间,比如访问数据库,都没有显示在结果中。
这种洞察力让我搜索并找到类似Visual Studio非常棒的功能: TIP (Tier Interaction Profiler) 。
它列出了我的所有SQL查询(查询的确切文本),调用它们的频率,调用的数据库,执行它们所花费的时间。它似乎处理其他I / O(如HTTP请求)。为了创造这个鲜为人知的(?)宝石而向MS致敬!
在这个赞美MS的难得机会之后,我不得不说我的应用程序大部分时间都会崩溃。但这是另一个故事,也许是另一个问题。