2011-06-19 49 views
3

我如何可以分析一個C#應用程序,它做了很多IO剖析IO綁定C#應用

的我都試過螞蟻和JetBrains公司,但他們不似乎與IO綁定應用程序很好地工作,而是報告CPU密集型任務

+0

通過I/O界限:你的意思是你做了很多(有意)讀/寫文件,或者你正在處理大量不適合內存的數據,因此你想分析它的外部記憶行爲? – dcn

回答

1

我覺得區分兩個目標很有用 - 只是測量,而不是實際定位代碼中的瓶頸。

對於後者,我發現this technique是最有效的。

我的大部分工作都是在一個大型的C#應用​​程序中,而且隨着人們工作中性能問題的不斷涌入 - 有時會受到I/O限制,有時甚至無法工作。無論如何,該方法立即找到它們。

3

Visual Studio 2010中的併發可視化工具可幫助識別重要的IO瓶頸區域。

「線程視圖」顯示應用程序中所有線程的時間線,顏色表示不同類型的活動。線程在IO上阻塞時會顯示紫色(例如文件,網絡等)。如果你點擊其中一個段,你會看到線程在IO上阻塞的調用棧。在下圖中,選擇了一個同步(紅色)段,堆棧顯示在「當前堆棧」面板中。

也有表示每個磁盤的通道,它們將顯示讀取/寫入,並且單擊其中一個段會顯示該段所代表的文件操作。

例如,

Concurrency Visualizer Threads View

時間軸下面是一些你可以通過點擊「可見時間軸個人資料」項訪問報表。他們會在可見時間線內向您顯示各種活動的聚合堆棧,以便您可以看到大部分阻塞IO的堆棧正在發生。同樣,「文件操作」報告將顯示可見時間線中的讀取/寫入。

「文件操作」 的報告是這樣的:

Concurrency Visualizer File Operations

欲瞭解更多信息,請查看team blogMSDN或海濟沙菲的blogMSDN magazine article