Visual Studio 2017 RC的最新文檔,請參看https://docs.microsoft.com/zh-cn/visualstudio/.
你可以使用Visual Studio Profiling工具來分析你的應用程式中的效能問題。本文展示了如何使用採樣資料。
採樣是一種統計學習方法,可以向你展示:在應用中,那一部分做了絕大多數的使用者模型工作。採樣是一個很好的方式用來尋找從哪裡可以加速你的程式。
在指定的時間間隔,採樣方法收集在應用程式中執行的函數的資訊。當你完成一個分析的運行後,被分析的資料的摘要視圖展示了最活躍的函數,稱之為Hot Path,應用程式中的大多數的工作被執行。視圖還列出了執行功能的最獨特的工作,並且提供了一個時間軸的圖表,你可以使用這個表徵圖只考慮其中一部分的抽樣結果。
如果採樣的方法不能給你你想要的結果,其他的分析工具收集方法能夠提供不同的資訊,可能對你有協助,關於這些方法的更多資訊請參看 https://msdn.microsoft.com/en-us/library/ms182374.aspx。
小貼士:
如果你的設定檔的代碼調用Windows函數,你應該確保你有最新的PDB檔案。沒有這些檔案,你的報表檢視將會列出Windows函數的名字,它們往往很神秘並且很難理解的。關於更多的如何確保你有你需要的檔案的資訊請參考:https://msdn.microsoft.com/en-us/library/89axdy6y.aspx。
建立並且運行一個效能會話
為了得到你需要分析的資料,你必須首先建立一個效能會話,然後運行這個會話,效能嚮導可以使你兩者兼顧。
如果你不是分析一個Windows傳統型應用程式或asp.net應用程式,你必須使用其他的某一種分析工具,參看 https://msdn.microsoft.com/en-us/library/mt210448.aspx.
步驟一:為了建立並且運行一個效能會話:
1.在VS中開啟解決方案,設定配置為Release。(在工具列中找到“解決方案配置”,把Debug改成Release)
注意:如果你不是你正在使用的這台電腦的管理員,當你使用profiler的時候你應該以管理員的身份運行VS。(右擊VS的運行表徵圖,然後點擊“以管理員身份運行”)
2.在“調試”菜單中,單擊“效能分析器”
3.單擊“效能嚮導”選項,並單擊“開始”
4.單擊“CPU採樣”選項,單擊“完成”
5.你的應用程式啟動,並且分析器開始收集資料
6.操作功能可能包含效能問題
7.如你通常所做的,關閉應用程式
當你運行完成這個應用後,被分析資料的摘要視圖出現在VS的主視窗中,新的會話表徵圖出現在效能探測器視窗。
步驟二:分析採樣資料
當你完成一個效能會話時,分析報告的摘要視圖出現在VS的主視窗中。
我們建議你從檢查Hot Path開始分析你的資料,函數列表就是做的絕大多數的工作,最後通過使用摘要時間表分析其他函數。你可以查看配置建議和錯誤清單中的警告。
請注意,抽樣方法可能不能給你你所需要的資訊。例如,只有當應用程式正在執行使用者模式代碼時採樣才會被收集。因此,一些功能,例如輸入和輸出操作,是不能被採樣的。分析工具提供了一些方法的集合,能夠使你專註分析一些重要的資料。有關其他方法的更多資訊請參看https://msdn.microsoft.com/enus/library/ms182374.aspx.
圖中的每一個標號地區對應一個過程的步驟:
為了分析採樣資料:
1.在摘要視圖中,Hot Path展示了你的應用程式中具有最高包容樣本的分支。當資料被收集時,這是最活躍的執行路徑。高包容值可以表明該演算法產生的調用樹可以最佳化。發現代碼中的函數中的最短路徑,注意,路徑可以包括系統功能和在外部模組中的系統功能。
(1)Inclusive Samples:表明函數做了多少工作,以及哪些函數調用它。高包容性計數指向函數最昂貴的整體。
(2)Exclusive Samples:表示多少工作是由函數體中的代碼做的,不包括調用它的函數做的工作。高獨家計數表示函數本身的效能瓶頸。
2.單擊函數名稱來顯示分析資料的功能細節視圖。功能細節視圖提供了一個分析資料的圖形化視圖選擇功能,顯示該函數調用的所有函數以及調用該函數的所有函數。
調用函數和被調用函數的塊的大小表示函數調用的相對頻率。
你可以單擊調用函數或被調用函數的名稱,使其顯示所選函數的函數細節。
較低的平面的功能細節視窗顯示功能代碼本身。如果你檢查代碼發現一個最佳化其效能的機會,單擊原檔案的名字,從而在VS的編輯器中開啟該檔案。
3. 繼續你的分析,通過在視圖的下拉式清單中選擇 Summary回到摘要視圖。然後在Functions Doing the Most Individual Work中檢查函數。這個列表顯示具有最高獨家樣本的函數。這些函數中的函數體的代碼執行重要工作,你可以對其進行最佳化。為了進一步分析一個特定的功能,單擊函數的細節視圖來顯示它。
繼續你的調查分析,你可以重新分析被分析資料的一段,通過使用摘要視圖中的時間軸,向你展示被選擇部分的Hot Path和Functions Doing Most Individual Work,關注於時間軸上的一個小的峰值,這可能會揭示出昂貴的調用樹和函數,這些內容在整個分析運行中可能沒有顯示。
為了重新分析一小段,在時間軸中選擇一小段,然後單擊Filter by Selection。
4.分析器還使用一套規則提出改善分析啟動並執行方式,並確定可能的效能問題。如果找到一個問題,在錯誤清單中就會顯示一個警告視窗。
在視圖菜單上單擊錯誤清單,然後開啟錯誤清單視窗。
為了看到這個有錯誤的函數,提出了一個警告功能的細節視圖中,雙擊警告。
為了查看詳細資料警告,右擊錯誤,然後單擊顯示錯誤協助。
步驟三:修改代碼並重新運行會話
在你發現有一個或多個功能可以進行最佳化時,你可以重複運行分析並比較資料的差異,從而得到你更改後的應用程式的效能。