3
A
回答
1
我覺得區分兩個目標很有用 - 只是測量,而不是實際定位代碼中的瓶頸。
對於後者,我發現this technique是最有效的。
我的大部分工作都是在一個大型的C#應用程序中,而且隨着人們工作中性能問題的不斷涌入 - 有時會受到I/O限制,有時甚至無法工作。無論如何,該方法立即找到它們。
3
Visual Studio 2010中的併發可視化工具可幫助識別重要的IO瓶頸區域。
「線程視圖」顯示應用程序中所有線程的時間線,顏色表示不同類型的活動。線程在IO上阻塞時會顯示紫色(例如文件,網絡等)。如果你點擊其中一個段,你會看到線程在IO上阻塞的調用棧。在下圖中,選擇了一個同步(紅色)段,堆棧顯示在「當前堆棧」面板中。
也有表示每個磁盤的通道,它們將顯示讀取/寫入,並且單擊其中一個段會顯示該段所代表的文件操作。
例如,
時間軸下面是一些你可以通過點擊「可見時間軸個人資料」項訪問報表。他們會在可見時間線內向您顯示各種活動的聚合堆棧,以便您可以看到大部分阻塞IO的堆棧正在發生。同樣,「文件操作」報告將顯示可見時間線中的讀取/寫入。
「文件操作」 的報告是這樣的:
欲瞭解更多信息,請查看team blog,MSDN或海濟沙菲的blog或MSDN magazine article。
相關問題
- 1. CPU或GPU綁定?剖析OpenGL應用程序
- 2. 剖析C + Python(SWIG)
- 3. 剖析vCard JSON C#
- 4. 剖析Chrome應用程序
- 5. JProfiler - 應用程序剖析
- 6. C gperftools - 剖析C代碼
- 7. java.io.File.toURI()IO綁定?
- 8. 剖析python C擴展
- 9. 剖析C++/CLI NUnit測試
- 10. C#HTTP請求剖析
- 11. 剖析C:空報告
- 12. 剖析
- 13. 使用NVIDIA可視化剖析器剖析MATLAB mex CUDA應用程序
- 14. 谷歌perf工具可用於剖析C應用程序?
- 15. 剖析用戶如何與C#Windows應用程序交互
- 16. ASP.NET MVC應用程序剖析
- 17. Grails應用程序剖析器
- 18. 剖析Mule ESB應用程序
- 19. 剖析Java Web應用程序
- 20. 流星應用程序剖析數據
- 21. 剖析Web應用程序請求
- 22. 剖析java Google App Engine應用程序
- 23. C#代碼優化,剖析,應用程序優化
- 24. 如何在Linux上剖析我的C++應用程序
- 25. 剖析R中
- 26. Python剖析
- 27. ngen和剖析
- 28. EProf Erlang剖析
- 29. Spring Boot剖析
- 30. 剖析.net庫
通過I/O界限:你的意思是你做了很多(有意)讀/寫文件,或者你正在處理大量不適合內存的數據,因此你想分析它的外部記憶行爲? – dcn