VS2010分析器:是否可以分析一种特定方法?

时间:2010-05-03 16:12:02

标签: visual-studio-2010 visual-studio profiling profiler

可能有一些方法可以打开并关闭代码中的分析?

或者您可以选择要分析的特定功能吗?

3 个答案:

答案 0 :(得分:30)

您还可以使用探查器的数据收集API来启动和停止对您感兴趣的方法进行概要分析。请参阅this MSDN article了解演练。

在这种情况下使用API​​的最佳方法是在方法执行之前调用StartProfile,然后在之后调用StopProfile。您应该通过“Start With Profiling Paused”选项开始分析,这样您才能在第一次调用StartProfile之前开始分析。

使用数据收集API将与采样或检测一起使用。

答案 1 :(得分:16)

是的,只需稍加努力,如果您进行检测分析(非采样),则可以执行此操作:

  1. 在Performance Explorer中将二进制文件/项目添加为目标
  2. 右键单击目标,单击“属性”
  3. 转到“检测”部分,取消选中“排除小功能...”
  4. 转到“其他工具选项”下的“高级”部分,指定您要特别分析的方法(例如/include:ConsoleApp.Program::Main,MyNamespace.MyClass::MyFunc
  5. /include语法有点奇怪,但是如果启动VS命令提示符并转到二进制文件目录,则可以运行vsinstr.exe /dumpfuncs foo.exe以查看可以明确包含的方法列表。 / p>

    有关详细信息,请参阅vsinstr.exe command-line syntax

答案 2 :(得分:0)

别。

您正在寻找“瓶颈”,对吧?

可能不在您认为的功能中。

This is the method I rely on, for any language or OS.

如果问题出在该功能中,它会告诉你。如果它在其他地方,它会告诉你。


@downvoter:有什么问题?如果您担心应用程序启动速度,请在应用程序启动期间手动获取样本。

分析器中的替代方法是在整个时间运行它,然后尝试找出时间线的哪个部分是启动。并且由于大部分时间都花在用户等待上,当您不想要样本时,您将其置于CPU采样模式。麻烦的是,你没有看到像加载dll,查询DNS等的I / O时间这样的事情,这些事情在启动时可能占主导地位。

然后整个问题就像“热门路径”一样,表现出愚蠢,真正的时间接受者可以easily hide

如果您问“我如何检查数千个堆栈样本?”答案是 您不需要 。如果创业公司显然很慢,那是因为它花费了大部分时间来做一些不需要做的事情 - 比如说30%的一部分要保守。 这意味着平均每3.33个样本就能看到一次。 由于您需要看两次或更多次以确定它是一个问题,平均而言您需要6.67个样本。 问题越大,您需要的样本越少。 (如果它是90%,你只需要2 / 0.9 = 2.2样本。) 如果您检查20个样本,您将看到任何问题花费超过10%,如果您修复它,任何较小的问题需要更大的百分比 - 它们会被加速比率放大,因此下次更容易找到它们-周围。 Here's the math.

相关问题