本篇通過一小段**的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...