关于VisualStudio性能分析数据中的独占样本数和非独占样本数的意义
- 非独占样本数: 为函数收集的性能数据的总数,其中包括该函数调用的其他函数的性能数据。
- 非独占转换次数: 在此函数(包括此函数调用的函数)的所有实例中发生操作系统(转换)事件的次数。
其它性能数据解释可以参看: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 |
99.81 |
54.84 |
||
ConsoleApplication1.Program.Foo2 |
44.97 |
44.97 |
对于Foo2,它的独占样本数和非独占样本数是一样的;而对于Foo1它的非独占样本数是独占样本数的两倍。
从中可以看出:
- 非独占样本数是指的包括了子函数执行时间的总执行时间
- 独占样本数是不包括子函数执行时间的函数体执行时间
如果把Main函数的采集数据放在一起就更容易理解了:Main函数独占样本数百分比为0,因为它的函数体执行时间几乎忽略不计,而非独占样本数百分比为100%,因为它在整个进程的生命周期内都存在。
函数名 |
非独占样本数 |
独占样本数 |
非独占样本数百分比 |
独占样本数百分比 |
ConsoleApplication1.Program.Foo1 |
99.81 |
54.84 |
||
ConsoleApplication1.Program.Foo2 |
44.97 |
44.97 |
||
ConsoleApplication1.Program.Main |
关于VisualStudio性能分析数据中的独占样本数和非独占样本数的意义的更多相关文章
- 关于aws账单数据中几个重要的与费用相关的字段的意义分析
今天在看aws账号的详细信息时,看到字段很多,大多数字段,根据名称可以知道代表的意义 对于如下几个字段的概念有点模糊(位于"UsageStartDate","UsageE ...
- 【转】Wireshark和Fiddler分析Android中的TLS协议包数据(附带案例样本)
本文转自:http://www.wjdiankong.cn/wireshark%E5%92%8Cfiddler%E5%88%86%E6%9E%90android%E4%B8%AD%E7%9A%84tl ...
- android黑科技系列——Wireshark和Fiddler分析Android中的TLS协议包数据(附带案例样本)
一.前言 在之前一篇文章已经介绍了一款网络访问软件的破解教程,当时采用的突破口是应用程序本身的一个漏洞,就是没有关闭日志信息,我们通过抓取日志获取到关键信息来找到突破口进行破解的.那篇文章也说到了,如 ...
- Graphic32中TBitmap32.TextOut性能分析[转载]
转载:http://blog.csdn.net/avan_lau/article/details/6958497 最近在分析软件中画线效率问题,发现在画一些标志性符号的方法,存在瓶颈,占用较大的时间. ...
- [Swift通天遁地]七、数据与安全-(15)使用单元测试进行代码的性能分析
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- Java 性能分析工具 , 第 2 部分:Java 内置监控工具
引言 本文为 Java 性能分析工具系列文章第二篇,第一篇:操作系统工具.在本文中将介绍如何使用 Java 内置监控工具更加深入的了解 Java 应用程序和 JVM 本身.在 JDK 中有许多内置的工 ...
- oracle11g的standby性能分析报告statpack安装
一般常见的分析standby database的性能问题的方法就是通过动态性能视图来判断,从11g开始,随着Active Data Guard功能的出现,早期的Statspack 工具可以在stand ...
- VisualVM 性能分析概述
VisualVM是一个免费的Java应用监控.分析工具. 简单说来,VisualVM是一种集成了多个JDK命令行工具的可视化工具,它能为您提供强大的分析能力.所有这些都是免费的!它囊括的命令行工具包括 ...
- PHP 性能分析第一篇: Xhprof & Xhgui 介绍
[前言]这是国外知名博主 Davey Shafik所撰写的 PHP 应用性能分析系列的第一篇,阅读第二篇可深入了解 xhgui,第三篇则关注于性能调优实践. 什么是性能分析? 性能分析是衡量应用程序在 ...
随机推荐
- Android Studio 配置模拟器AVD存放路径(默认在c盘,解决c盘空间不够问题)
Android Studio 安装之后,默认的会给我们创建一个 Nexus 的模拟器, 这个模拟器的镜像文件放在了 C:\Users\Administrator\.android 中 其中的avd文 ...
- codeforces:Roads in the Kingdom分析和实现
题目大意:国家有n个城市,还有n条道路,每条道路连通两个不同的城市,n条道路使得所有n个城市相互连通.现在国家经费不足,要关闭一条道路.国家的不便度定义为国家中任意两个不同的城市之间的距离的最大值,那 ...
- hdu3530 Subsequence
题意:There is a sequence of integers. Your task is to find the longest subsequence that satisfies the ...
- Angular27 指令
1 自定概述 2 自定义指令 详情参见<揭秘Angular2> 2.1 属性指令 >工具代码 <div class="panel panel-primary" ...
- 如何学习MySQL
转自高手的帖子 1.坚持阅读官方手册,看MySQL书籍作用不会特别大:(挑选跟工作相关的内容优先阅读,例如InnoDB存储引擎,MySQL复制,查询优化) 2.阅读官方手册,同时对阅读的内容做对应的测 ...
- Solidity mapping循环
https://medium.com/@blockchain101/looping-in-solidity-32c621e05c22
- jquery中children()
- Python3 BeautifulSoup和Pyquery解析库随笔
BeautifuSoup和Pyquery解析库方法比较 1.对象初始化: BeautifySoup库: from bs4 import BeautifulSoup html = 'html strin ...
- Python3 使用requests库读取本地保存的cookie文件实现免登录访问
1. 读取selenium模块保存的本地cookie文件来访问知乎 读取http://www.cnblogs.com/strivepy/p/9233389.html保存的本地cookie来访问知乎的 ...
- c# .NET开发邮件发送功能的全面教程(含邮件组件源码)
http://www.cnblogs.com/heyuquan/p/net-batch-mail-send-async.html