提升Visual Studio 2012的響應能力
微軟開發經理 Eric Knox 最近發表了一篇文章,其中提供了對 VS2012 編輯性能所做出的內部改善的深度觀點。 Knox 的團隊改進了他們的方法,不僅僅使用了 PerfWatson,還結合使用了一種叫做即時延遲跟蹤器(Immdiate Delay Tracker,IDT)的新工具。
PerfWatson 收集了“迷你的堆信息,讓微軟可以確定在一天中的特定時間點,運行了哪些 Visual Studio 的代碼”。 因為工程師想要基于每次擊鍵來監控 VS 的性能,他們把 IDT 設計為“更細粒度的度量系統”,它使用了 Event Tracing for Windows(ETW)。
ETW 是一種操作系統提供的通用目的、高速的跟蹤工具。它使用了內核實現的緩存和日志機制,從而為用戶態應用程序和內核態設備驅動所引發的事件都提供了跟蹤機制。此外,ETW 讓你可以動態地啟用和禁用日志功能,使得在生產環境中執行詳細跟蹤更容易,而不需要重啟操作系統或者應用程序。
據 Knox 所說,基于 ETW 的方法的優勢在于,“團隊不會像 PerfWatson 一樣使用單一的棧,而是每毫秒都會獲得調用棧,然后聚合分析棧的集合,而不是單一時間點的數據。” 然后,使用 VS 的工程師可以獲得有用的性能信息,同時最小化觀察程序的影響。 Knox 的團隊監控了微軟的內部 VS 用戶,實現了修正之后,記錄了以下獲得的性能數據:
Visual Studio 2010 |
當前 |
||
C# |
50毫秒以上的按鍵 |
15. 05% |
7. 87% |
100毫秒以上的按鍵 |
10. 26% |
0. 62% |
|
200毫秒以上的按鍵 |
1. 50% |
0. 06% |
|
C++ |
50毫秒以上的按鍵 |
11. 85% |
0. 48% |
100毫秒以上的按鍵 |
7. 88% |
0. 20% |
|
200毫秒以上的按鍵 |
6. 85% |
0. 07% |
|
VB |
50毫秒以上的按鍵 |
0. 83% |
0. 60% |
100毫秒以上的按鍵 |
0. 13% |
0. 06% |
|
200毫秒以上的按鍵 |
0. 06% |
0. 06% |
由于 VS 2012 RC已經發布,讀者可以自己使用產品,并判斷這些變化是否顯著。
查看英文原文:Improving Responsiveness in Visual Studio 2012