VS2012自帶的 效能分析 工具使用例項

2022-08-31 00:18:21 字數 2564 閱讀 2108

本篇通過一小段**的console程式來進行效能的分析以及改進、直到後面的改進前、改進後效能比較結果。

static void main(string args)

}public class core

-", datetime.now, input);

//log to file

log(result);

}public void log(string message)

: ";

msg = msg.replace("", datetime.now.tostring("yyyy-mm-dd hh:mm:ss"));

msg = msg.replace("", message);}}

進行初次分析效能,操作步驟如下:

點選「完成」按鈕,此時會自動進行分析,直接跑完控制台程式,vs2012會自動顯示出分析報告,如下:

從上面的「摘要」報告中得知

共列出了最耗時的5個函式

報告檢視種類:

生成的報告檢視有很多種,上面所示預設的是「摘要」檢視,其他型別的檢視如下所列:

那麼我們如何跟蹤這幾個耗時的函式呢?我們需要轉入「函式詳細資訊」檢視,如下:

右邊紅框代表耗時分布比例,顯然上圖中process函式占用了很大比例

下邊的紅框代表相應的**,並且還會紅色高亮效能損耗突出的**行、以及相應損耗比例(圖中的99.2%是由於這行**共有3個損耗點:83.3%+14.4%+1.5%)

我們需要往下跟蹤,進入最嚴重的process函式進行檢視,我們click右邊紅框中的process條,進入細化的分析介面,如下:

看來主要問題來自"log(result)"**行,佔了73.5%,繼續深入跟蹤,如下圖:

獲得檔名優化

修改**如下:  

public class core

-", datetime.now, input);

//log to file

log(result);

}private static listlog = new list();

public static void log(string message)//filename去掉了,因為此時已經不需要這個變數了,因為是由其他執行緒負責寫入磁碟

: ";

msg = msg.replace("", datetime.now.tostring("yyyy-mm-dd hh:mm:ss"));

msg = msg.replace("", message);

log.add(msg);}}

我們再次執行效能分析,如下:

我們比較下第一次和這一次的曲線圖:

改進後的效能明顯好於改進之前的效能。

自定義效能分析

我們可以通過修改屬性來add/remove效能指標,比如要加入某個/某些windows計數器、收集windows事件、收集.net物件生命週期等,我們可以進行如下操作來進行設定:

將會生成如下更詳細的報告:

報告中會列出生成的最多的是哪種物件(本例中是string)、由哪些函式導致的分配了最多的記憶體、等等

在「標記」檢視中,能看到每隔500毫秒收集的windows計數器資料,如下圖就是磁碟佇列計數器的收集:

在「物件生存期」檢視中,能看到各種物件從new到dispose的所有資料,如下圖:

很牛b吧。

下面說說如何通過vs2012來對獨立執行的程式進行效能分析,其實很簡單,就下面這個圖就搞定了,大家都懂的:

再說說如何對web專案效能分析吧...

先開啟web專案解決方案,然後直接進行效能分析,有人會說沒有請求操作啊,這個簡單,有多個解決辦法:

覺得有用的話幫我「推薦」click吧...

見鬼的VS2012鏈結錯誤

今天vs2012活見鬼,出現了奇怪的鏈結錯誤 c program files x86 msbuild microsoft.cpp v4.0 v110 microsoft.cppcommon.targets 347,5 error msb6006 cl.exe exited with code 1.查...

VS2010 開啟 VS2012 的專案

用 vs2010 開啟 vs2012 專案,只需兩步。1.修改解決方案檔案 sln 使用記事本開啟 sln 檔案,將裡面的 microsoft visual studio solution file,format version 12.00 visual studio 2012 project 修改...

VS2012常用的快捷鍵

注釋 vs2010是 ctrl e,c vs2012是 ctrl k,ctrl c 實際操作,按住ctrl鍵不放,先按k鍵,再按c鍵。相當於ctrl k加 ctrl c的組合鍵 反註解 vs2010是 ctrl e,u vs2012是 ctrl k,ctrl u 1.強迫智慧型感知 ctrl j 2...