关于VisualStudio性能分析数据中的独占样本数和非独占样本数的意义
VisualStudio中自带有Profile工具进行性能性能分析,其中用得比较多的数据是函数调用时间,它主要有独占样本数和非独占样本数两个指标,关于这两个指标代表的意义,MSDN的解释比较文艺:
- 非独占样本数: 为函数收集的性能数据的总数,其中包括该函数调用的其他函数的性能数据。
- 非独占转换次数: 在此函数(包括此函数调用的函数)的所有实例中发生操作系统(转换)事件的次数。
其它性能数据解释可以参看:http://msdn.microsoft.com/zh-cn/library/ms242747(v=vs.90).aspx。
当然,就算看不懂两个数据表示的具体意义也无碍于我们分析性能瓶颈,反正数值大的肯定是性能瓶颈。不过,为了更好的使用这个工具,还是稍微理解点的好。
为了通俗的解释这两个指标,我这里写了两个简单的函数Foo1和Foo2,其中Foo1调用了Foo2,其它的函数体是一样的。
static void Foo1()
{
var total = 0;
for (int i = 0; i < 10000 * 10000; i++)
{
total += i;
}
Foo2();
}
static void Foo2()
{
var total = 0;
for (int i = 0; i < 10000 * 10000; i++)
{
total += i;
}
}
我们的调用方式如下:
static void Main(string[] args)
{
System.Threading.Thread.Sleep(2000); //等待采集器启动需要一段时间
Foo1();
}
此时生成的性能报告如下:
函数名 |
非独占样本数 |
独占样本数 |
非独占样本数百分比 |
独占样本数百分比 |
ConsoleApplication1.Program.Foo1 |
526 |
289 |
99.81 |
54.84 |
ConsoleApplication1.Program.Foo2 |
237 |
237 |
44.97 |
44.97 |
对于Foo2,它的独占样本数和非独占样本数是一样的;而对于Foo1它的非独占样本数是独占样本数的两倍。
从中可以看出:
- 非独占样本数是指的包括了子函数执行时间的总执行时间
- 独占样本数是不包括子函数执行时间的函数体执行时间
如果把Main函数的采集数据放在一起就更容易理解了:Main函数独占样本数百分比为0,因为它的函数体执行时间几乎忽略不计,而非独占样本数百分比为100%,因为它在整个进程的生命周期内都存在。
函数名 |
非独占样本数 |
独占样本数 |
非独占样本数百分比 |
独占样本数百分比 |
ConsoleApplication1.Program.Foo1 |
526 |
289 |
99.81 |
54.84 |
ConsoleApplication1.Program.Foo2 |
237 |
237 |
44.97 |
44.97 |
ConsoleApplication1.Program.Main |
527 |
0 |
100 |
0 |
转载于:https://www.cnblogs.com/TianFang/archive/2012/11/18/2776266.html
关于VisualStudio性能分析数据中的独占样本数和非独占样本数的意义相关推荐
- App性能分析数据监控
App性能分析数据监控 APP的性能监控包括: CPU 占用率.内存使用情况.网络状况监控.启动时闪退.卡顿.FPS.使用时崩溃.耗电量监控.流量监控等等. 文中所有代码都已同步到github中,有兴 ...
- 如何对一个变量数据进行正则判定_生存分析数据中的BuckleyJamesMultipleRegression Model...
一.模型简介 目前,生存分析领域,最常用的是Cox比例风险回归模型,该模型具有良好的特性,不仅可以分析各种自变量对生存时间的影响,而且对基准风险分布不作任何要求(半参数模型).Cox模型使用时要满足一 ...
- Python性能分析指南——中
程序使用了多少内存? 现在我们对计时有了较好的理解,那么让我们继续弄清楚程序使用了多少内存.我们很幸运,Fabian Pedregosa模仿Robert Kern的line_profiler实现了一个 ...
- linux中top性能分析工具中的TIME+
简言 1. top命令的TIME/TIME+是指的进程所使用的CPU时间,不是进程启动到现在的时间 2. 因此,如果一个进程使用的cpu很少,那即使这个进程已经存在很长时间,TIME/TIME+也是很 ...
- spark DataFrame 根据条件替换数据中的值,并保留非条件的原始值
otherwise子句不但能接收固定的值,还可以接收原来的列,保留列中原始的数据.如下: dataF.withColumn("newColumnName",when(col(&qu ...
- Graphic32中TBitmap32.TextOut性能分析[转载]
转载:http://blog.csdn.net/avan_lau/article/details/6958497 最近在分析软件中画线效率问题,发现在画一些标志性符号的方法,存在瓶颈,占用较大的时间. ...
- jq 直接调用php文件_PHP性能分析工具,你在用哪一个?
PHP性能分析工具,小编一直都在用这个:Xhprof , 今天给大家介绍一下如何安装与如何使用,注意事项等!也许你会用得着的. 什么是Xhprof Xhprof是一个轻量级的分层性能测量分析器.在数据 ...
- Linux性能分析命令工具汇总
转自:http://rdc.hundsun.com/portal/article/731.html?ref=myread 出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章. ...
- Python 优化第一步: 性能分析实践 使用cporfile+gprof2dot可视化
拿来主义: python -m cProfile -o profile.pstats to_profile.py gprof2dot -f pstats profile.pstats |dot -Tp ...
- Linux sar性能分析
2019独角兽企业重金招聘Python工程师标准>>> Linux使用sar进行性能分析 sar简介 sar命令常用格式 sar常用性能数据分析 整体CPU使用统计-u 各个CPU使 ...
最新文章
- CCNA题库关于Frame-relay看图答题的解答
- 数组字符串转化成数组与eval函数
- 公众号知道我浏览他吗_公众号可以看到访客吗,公众号怎么看到访客
- asp.net core mvc View Component 应用
- 找出最大值和最小值(算法导论第三版9.1-2)
- 手机促销活动页面怎么设计?有了全面的模板,简单了
- HTML中name与id的区别
- Python风格总结:if语句
- Q121:PBRT-V3,光传播方程(The Light Transport Equation)(14.4章节)
- 苹果手机耗电快_苹果手机耗电快怎么解决?我有2个小技巧能帮到你
- Web前端面试指导(十七):一个满屏 品 字布局 如何设计?
- java 登陆拦截器_java 登录拦截器
- 常用名词理解(APK,SDK,JDK,API,DLL)
- 港股历史行情数据 API 接口
- 计算机无法启动故障树,发动机无法启动的故障树分析及诊断方法.docx
- 数据结构-九宫格(回溯法)
- centos 7重置密码
- postman接口工具-Invalid URI http:///%7B%7Burl%7D%7Dapi/document/getHelpDocumentUrl?appType=1
- 推荐给中学生的数学课外书:《几何原本》
- Google I/O 2014? No,Android I/O 2014