日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

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

發布時間:2023/12/4 asp.net 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用PerfView监测.NET程序性能(三):分组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在上一篇博客使用PerfView監測.NET程序性能(二):Perfview的使用中,我們通過Perfview幫助文件中自帶的代碼來簡單使用了Perfview,了解了基本操作。現在來看看Perfview中的分組操作(Grouping)。分組功能都旨將記錄到的各種函數調用堆棧以指定的規則進行分組,幫助你組織和找到更關心的數據。

為什么需要分組

?在實際使用中,PerfView通常會收集到非常多的函數調用棧數據,包括我們關心的程序的函數調用信息,及一大堆我們不關心的其他函數調用信息,例如windows系統的底層函數。這么多有用沒用的條目都列出在列表視圖上,令人眼花繚亂。如何將我們不需要的數據分組歸納呢?Perfview提供分組功能。

分組功能使用類似于正則的匹配功能,將函數全名(一個函數的全名包含了程序集,命名空間,類名和函數名,例如"mscorlib.n!System.DateTime.get_Now()")進行匹配,并替換成自定義的分組名稱。例如,可以對所有在Debug目錄下的程序集的函數單獨顯示,而其他函數則分組成“OTHER”,這樣,我們就可以只看見我們程序里的函數調用。其實這就是默認的[Just My App]分組規則的作用:

?

通配符

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

在使用分組之前,先看看PerfView定義的幾個"通配符":

* :匹配任意數量的字符

%:匹配任意數量的數字和英文字母和點號("."),等于.NET正則中的 [\w\d.]*

^ :匹配開頭

|:“或”操作

{}:代表一個分組,等于.NET正則里的小括號

?

分組規則

PerfView中有兩種分組操作,分別是 PAT->GROUP 和 PAT=>GROUP。在這里“PAT”代表需要匹配的模式(Pattern),“GROUP”代表你自定義的組名。 而這兩種分組方式區別就在于中間的“->”和"=>",前者表示忽略入口函數,后者則會將入口函數顯示在分組中。有時我們希望知道一個分組里的函數最初是由哪個函數開始調用的,這時候就可以使用后者了。除此之外,兩種分組方式沒有其他不同。

?我們看看具體的分組規則的使用:

1. PAT->GROUP形式

如上述,PAT->GROUP形式是簡單地將一個函數的全名稱中包含"PAT"字眼的條目都分到“GROUP”組中,例如,在不分組的情況下,我們收集到的函數調用數據列表是這樣的:

里面有我們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”組,效果如下:

是不是清爽了很多?這樣的分組能使我們快速地過濾掉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”,但除非你展開這個分組的明細,查找每個函數調用樹,否則你不知道是什么函數調用了這組函數。

?

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


System Functions組明確指示了該組的函數的入口點是“mscorlib.ni!System.DateTime.get_Now()”函數,即DateTime.Now導致了這些函數的執行。?

以上便是PerfView的分組功能。但其實這只是分組功能中的一部分。通過規則的搭配可以有更強大的效果。而最全面的說明其實是在PerfView自帶的F1幫助文件。這里只作一個拋磚引玉的簡要說明。因此如果需要了解更全面的分組技巧,可以去幫助文件里搜索相關主題。


總結

以上是生活随笔為你收集整理的使用PerfView监测.NET程序性能(三):分组的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。