使用PerfView监测.NET程序性能(三):分组

在上一篇博客使用PerfView监测.NET程序性能(二):Perfview的使用中,我们通过Perfview帮助文件中自带的代码来简单使用了Perfview,了解了基本操作。现在来看看Perfview中的分组操作(Grouping)。分组功能都旨将记录到的各种函数调用堆栈以指定的规则进行分组,帮助你组织和找到更关心的数据。

为什么需要分组

 在实际使用中,PerfView通常会收集到非常多的函数调用栈数据,包括我们关心的程序的函数调用信息,及一大堆我们不关心的其他函数调用信息,例如windows系统的底层函数。这么多有用没用的条目都列出在列表视图上,令人眼花缭乱。如何将我们不需要的数据分组归纳呢?Perfview提供分组功能。

分组功能使用类似于正则的匹配功能,将函数全名(一个函数的全名包含了程序集,命名空间,类名和函数名,例如"mscorlib.n!System.DateTime.get_Now()")进行匹配,并替换成自定义的分组名称。例如,可以对所有在Debug目录下的程序集的函数单独显示,而其他函数则分组成“OTHER”,这样,我们就可以只看见我们程序里的函数调用。其实这就是默认的[Just My App]分组规则的作用:

640?wx_fmt=png

 

通配符

那么,分组功能如何使用呢?

在使用分组之前,先看看PerfView定义的几个"通配符":

* :匹配任意数量的字符

%:匹配任意数量的数字和英文字母和点号("."),等于.NET正则中的 [\w\d.]*

^ :匹配开头

|:“或”操作

{}:代表一个分组,等于.NET正则里的小括号

 

分组规则

PerfView中有两种分组操作,分别是 PAT->GROUP 和 PAT=>GROUP。在这里“PAT”代表需要匹配的模式(Pattern),“GROUP”代表你自定义的组名。 而这两种分组方式区别就在于中间的“->”和"=>",前者表示忽略入口函数,后者则会将入口函数显示在分组中。有时我们希望知道一个分组里的函数最初是由哪个函数开始调用的,这时候就可以使用后者了。除此之外,两种分组方式没有其他不同。

 我们看看具体的分组规则的使用:

1. PAT->GROUP形式

如上述,PAT->GROUP形式是简单地将一个函数的全名称中包含"PAT"字眼的条目都分到“GROUP”组中,例如,在不分组的情况下,我们收集到的函数调用数据列表是这样的:

640?wx_fmt=png

里面有我们Tutorial.exe的函数,例如,tutorial!Program.SpinForASecond()和tutorial!Program.RecSpin(),同时也有很多.NET的内部函数,例如 mscorlib.n!System.get_Now()和mscorlib.n!System.TimeSpan.get_TotalSeconds(),等等。假设我们只关心tutorial.exe自身的函数,而不希望被.NET内部函数所干扰,我们则可以设置一个分组规则“mscorlib->.NET”,这样,所有包含“mscorlib”字眼的方法全名称的条目都会被分组进“.NET”组,效果如下:

640?wx_fmt=png

是不是清爽了很多?这样的分组能使我们快速地过滤掉mscorlib有关的函数,只剩下tutorial自己的函数(和一些其他函数,当然如果你愿意,也可以将其他的函数"分组"掉)

 

2. {*}=>$1

该形式的规则意思是: 花括号里匹配到的条目会被分组,而组名正是是花括号里的匹配到的内容,“$1”是一个占位符,对应的是花括号“{}”里的内容。假设有两个函数:tutorial!Program.SpinForASecond()和tutorial!Program.RecSpin(), 而应用的规则是“{tutorial!}->My APP $1”,则分组后,这两个函数被分进一组,并且组名为“My App tutorial!”

Perfview还支持同时设置多个规则,例如设置规则为“{tutorial!}->My APP $1;{mscorlib.ni!}->Internal $1”,这里有两个规则,一个是蓝色部分,另一个是红色部分,中间用分号(;)隔开。如果函数全名中有"tutorial!"的就分进名为“My APP tutorial!”组,而有“mscorlib.ni!”字眼的就分进“Internal mscorlib.ni!”组。

 

3.PAT=>GROUP

最后来看看入口点规则分组(Entry Point Grouping)。前边提到过,“PAT=>GROUP”与“PAT->GROUP”的不同在于,后者会忽略掉该组的入口函数,意味着你很难知道某个分组里的函数是从哪个函数执行进去的,而前者则会包含入口点函数信息。我们通过图例来看看实际效果。

下图中,使用“mscorlib->System Functions”规则来对mscorlib的函数进行分组,组名为“System Functions”,但除非你展开这个分组的明细,查找每个函数调用树,否则你不知道是什么函数调用了这组函数。

640?wx_fmt=png

 

而现在使用“mscorlib=>System Functions”,看看有什么不同:

640?wx_fmt=png


System Functions组明确指示了该组的函数的入口点是“mscorlib.ni!System.DateTime.get_Now()”函数,即DateTime.Now导致了这些函数的执行。 

以上便是PerfView的分组功能。但其实这只是分组功能中的一部分。通过规则的搭配可以有更强大的效果。而最全面的说明其实是在PerfView自带的F1帮助文件。这里只作一个抛砖引玉的简要说明。因此如果需要了解更全面的分组技巧,可以去帮助文件里搜索相关主题。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/318172.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【做题记录】构造题

CF468C Hack it! 题意: 令 \(F(x)\) 表示 \(x\) 的各个位上的数字之和,如 \(F(1234)123410\) 。 给定 \(a(a\le 10^{18})\) ,请求出任意一组 \(l,r(l,r\le 10^{200})\) ,要求满足: \[\sum_{il}^{r}F(i)\pmod{a}0 \]输出…

主席树 学习报告

文章目录前言可持久化线段树代码区间第k大代码练习粟粟的书架代码森林代码任务查询系统代码列队代码前言 主席树,全称是可持久化权值线段树 利用r和l-1两棵权值线段树作差得到[l,r]的信息 从而解决各种问题 在排名这方面功能极其强大 可持久化线段树 学主席树之前…

Star Way To Heaven (prim最小生成树) // [ NOIP提高组 2014]飞扬的小鸟(DP)

文章目录T1:Star Way To Heaven题目题解代码实现T2:飞扬的小鸟题目题解代码实现T1:Star Way To Heaven 题目 小 w 伤心的走上了 Star way to heaven。 到天堂的道路是一个笛卡尔坐标系上一个 n*m 的长方形通道 顶点在 (0,0) 和 (n,m) 。 小…

CF1043E Train Hard, Win Easy

CF1043E Train Hard, Win Easy 题意: n个人有Ai和Bi两个属性,给出m个关系:xi yi表示xi和yi不能配对 i,j两人规定匹配的价值为min (Ai Bj , Bi Aj ) 回答出每个人跟所有人配对(除开不能和自己匹配的人)的价值总和 …

P7887-「MCOI-06」Existence of Truth【构造】

正题 题目连接:https://www.luogu.com.cn/problem/P7887?contestId52021 题目大意 给出三个长度为nnn的序列xi,yi,zix_i,y_i,z_ixi​,yi​,zi​&#xff0c;求一个序列aaa满足0≤ai<10970\leq a_i<10^970≤ai​<1097且 xi(∑j1iaj)yi(∑jinaj)≡zi(mod1097)x_i\lef…

IdentityServer4-客户端的授权模式原理分析(三)

在学习其他应用场景前&#xff0c;需要了解几个客户端的授权模式。首先了解下本节使用的几个名词Resource Owner&#xff1a;资源拥有者&#xff0c;文中称“user”&#xff1b;Client为第三方客户端&#xff1b;Authorization server为授权服务器&#xff1b;redirection URI&…

【做题记录】[NOIP2011 提高组] 观光公交

P1315 [NOIP2011 提高组] 观光公交 我们想在 \(k\) 次加速每一次都取当前最优的方案加速。 考虑怎样计算对于每一条边如果在当前情况下使用加速器能够使答案减少的大小。 如果当前到达某个点时已经有人在等待了&#xff0c;那么加速这个点以前的边能够让这个点下车的人距离减少…

[2019 牛客CSP-S提高组赛前集训营4题解] 复读数组(数论)+ 路径计数机(数上DP)+ 排列计数机(线段树+二项式定理)

文章目录T1&#xff1a;复读数组题目题解代码实现T2&#xff1a;路径计数机题目题解代码实现T3&#xff1a;排列计数机题目题解CODET1&#xff1a;复读数组 题目 有一个长为nk的数组&#xff0c;它是由长为n的数组A1,A2,…,An重复k次得到的。 定义这个数组的一个区间的权值为…

模板:(多重)哈希

前言 还在为不想写双哈希又怕哈希冲突挂掉发愁吗&#xff1f; 来这里&#xff0c;满足你的一切梦想&#xff01; 哈希还有模板&#xff1f; 其实就是把相关的函数和数组打包到一个结构体里 但是针心方便啊&#xff01;&#xff01;&#xff01; 如果想双哈希的话&#xff0c;定…

CF1183H Subsequences (hard version)

题意&#xff1a; 长度为n的字符串S&#xff0c;现在要找出k个不同的子序列&#xff0c;使得这些序列的总价值最低 一个序列的价值等于删去的字符长度&#xff08;空串也算子序列&#xff09; 1≤n≤100,1≤k≤1012 题解&#xff1a; 一看就是dp&#xff0c;我们先想想串a可…

P7888-「MCOI-06」Distinct Subsequences【dp】

正题 题目大意 给出一个长度为nnn的字符串aaa&#xff0c;求它的所有子序列的本质不同子序列个数。 1≤n≤1061\leq n\leq 10^61≤n≤106 解题思路 考虑每个子序列产生的贡献&#xff0c;为了防止算重我们一个只统计走子序列自动机上的边的子序列&#xff0c;也就是说对于TTT…

微软携手 Docker 打造 CNAB,分布式应用来了!

微软中国MSDN 前天Microsoft Connect(); 2018发布的众多最新科技&#xff0c;都让全球开发者惊艳不已。其中一项最令开发者瞩目并迫不及待——微软联合Docker发布了云本地应用捆绑包&#xff08;Cloud Native Application Bundle&#xff0c;以下简称CNAB&#xff09;&#xff…

9.4 模拟

前言 175分 60100150 T3和T4做的不好 T4没有理解题目的意思…qwq T3暴力似乎挂了… 但T1和T2还是不戳的 T1打表找规律的方法也许更为有效 考场 先看题。 药丸。。 T3、4甚至根本没有看懂… T1和T2也感觉挺玄乎的 有一种爆零的预感 8&#xff1a;10 先看T1 推了推似乎还是有…

P4135 作诗

P4135 作诗 题意&#xff1a; 给定 n 个不大于 c 的正整数 a1…an 和 m 组询问&#xff0c;每次问 [l,r] 中有多少个数出现正偶数次。 对于每次询问&#xff1a; 设上一个询问的答案为 ans&#xff08;第一个询问时 ans0&#xff09;&#xff0c;令L(lans)mod n1&#xff0c;…

[C++]试一试结构体struct node的构造函数

可直接点击跳转到构造函数处结构体概念定义结构体定义结构体及结构体变量结构体变量的特点成员调用成员函数调用结构体的构造函数Upd1Upd2Upd3结构体概念 在实际问题中&#xff0c;一组数据往往具有不同的数据类型。 例如&#xff1a;人口大普查时&#xff0c;需要记录每一个人…

CSP-S 2021 退役记

写的比较草率&#xff0c;但的确是真实感受。 10.23 回寝室前敲了一个 dinic 板子&#xff0c;觉得不会考。。。 10.24 8:00 起床&#xff0c;还好今天宿管不在&#xff0c;可以起的晚一点。 吃了早饭来机房颓废。 10:00 似乎考前反而不知道该如何复习了&#xff0c;翻了翻以前…

Ybtoj-排列计数【矩阵乘法,分块幂】

正题 题目链接:http://noip.ybtoj.com.cn/contest/596/problem/1 题目大意 TTT组询问给出nnn求有多少个nnn的排列满足第一个是111并且相邻的差不超过222。 1≤T≤106,1≤n≤1091\leq T\leq 10^6,1\leq n\leq 10^91≤T≤106,1≤n≤109 解题思路 考虑一下如果我们要不断向前填满…

[多校联考-西南大学附中]切面包(线段树/概率与期望)+ Slow Path Finding Algorithm(拓扑排序/DP)+ 分数转化(数论)

文章目录T1&#xff1a;分数转换题目题解代码实现T2&#xff1a;Slow Path Finding Algorithm题目题解代码实现T3&#xff1a;切面包题目题解代码实现T1&#xff1a;分数转换 题目 Time limit: 1.5 seconds Memory limit: 512 megabytes 给定一个十进制小数&#xff0c;请你…

P3992 [BJOI2017]开车

P3992 [BJOI2017]开车 题意&#xff1a; 题解&#xff1a; 我们要先将问题转换 圈是车&#xff0c;x是加油站。红色部分为车移动的路线 数组a是车数量的前缀和 数组b是加油站的前缀和 而a[i]与b[i]的差的绝对值就是对应的红色路被走的次数 现在车发生位置移动&#xff0c;b数…

IdentityServer4-MVC+Hybrid实现Claims授权验证(四)

上节IdentityServer4-客户端的授权模式原理分析&#xff08;三&#xff09;以对话形式&#xff0c;大概说了几种客户端授权模式的原理&#xff0c;这节重点介绍Hybrid模式在MVC下的使用。且为实现IdentityServer4从数据库获取User进行验证&#xff0c;并对Claim进行权限设置打下…