Ste*_*man 5 theory profiling visual-studio-2012
我和一位同事正在查看VS2012中的Visual Studio性能分析报告,他们问我:"为什么用百分比来表示方法或者调用方法花费的时间?"
我的解释是该工具提供了一些表示方法/调用需要很长时间或方法的哪些部分需要很长时间.现在,这可以是抽象(百分比)或绝对的东西(时间(毫秒)),但要么足以指向应用程序中的问题区域.
我们并不特别相信,所以我想我会问互联网.
小智 7
这是Visual Studio Profiler团队的Andre Hamilton.值为百分比而不是毫秒的原因是因为您看到的是基于样本概要分析而非基于检测的概要分析的报告.
样本分析基本上,操作系统将定期执行堆栈遍历.您在分析报告中看到的结果表示操作系统执行特定功能在堆栈上的堆栈遍历的时间的一小部分
Instrumentation Profiling我们基本上修改二进制文件(静态或动态)并拦截函数的开始和结束.然后我们在启动和退出函数时采用时间戳.这将为您提供有关函数执行的精确信息,但它不是免费的.因为在每个函数进入和退出时都会获取信息,所以生成的分析报告可能非常庞大(只需几秒钟的程序执行就不会有超过1GB的数据).此外,如果在签名二进制文件上使用静态检测,则需要将它们重新签名.这可能使开发过程复杂化.动态检测在这里有所帮助,但这不会使您免于数据开销.除非你专门寻找时间信息,否则采样真正是其他海报所表达的方式.
FYI Visual Studio附带了vsinstr for static instrumentation(可在\ Team Tools\Performance Tools中找到).
以毫秒为单位的时间会根据许多因素而有所不同 - 您的开发计算机可能有四个处理器和 32GB RAM - 但用户计算机可能只有单核和 1GB RAM。
一致的(主要是1)是“花费最长的位” - 因此百分比可以帮助您识别代码中最慢的部分,这些部分是您可以通过优化获得最多时间的部分。
1不管编译器如何根据处理器优化代码。