2010-08-26 31 views
2

Visual Studio Profiler對性能分析印象深刻。快速爲我的目的和易於使用。Windows應用程序的性能分析。 Visual Studio Profiler更好的選擇?

我只是想知道關於視覺工作室探查器的警告。有沒有更好的Windows應用程序分析器,這些告誡更好?

+2

對我來說的第一個提示:Visual Studio版本的價格標籤隨配置文件一起提供! :) – 2010-08-26 06:24:32

+2

請參閱我的回答http://stackoverflow.com/questions/2302425/profiling-c-code-on-windows-when-using-eclipse獲取Windows分析器列表。 – Patrick 2010-08-26 06:56:24

+0

@Adrian Grigore:我同意。 :-) @帕特里克:我用過很困。是的,它非常方便。但只是抽樣。 – rpattabi 2010-08-26 07:01:47

回答

5

從積極的方面來看,沒有人會製作像微軟這樣的優秀應用程序。 Visual Studio是一個很好的產品,它的分析器共享這些屬性。

另一方面,還有一些注意事項(由其他配置文件共享)。

  • 在採樣模式下,當線程被阻塞時,它不會採樣。因此,對於無關的I/O,套接字調用等都是盲目的。這是一個屬於教授gprof的一個屬性,它起初是PC採樣器,並且由於被阻止時PC無意義,採樣已關閉。 PC可能沒有意義,,但堆棧告訴了爲什麼線程被阻塞,並且當有很多時間進入時,你需要知道它。

  • 在儀表模式下,它可以包含I/O,但它只能給你函數級別的時間百分比,而不是行級別。如果功能很小,或者他們只在很少的地方互相呼叫,那麼這可能是確定的,因此尋找呼叫站點並不難。我與優秀的程序員一起工作,但我們的代碼並非全部如此。事實上,呼叫站點通常是不可見的,因爲它們是編譯器插入的。另一方面,堆棧樣本無論是誰寫的,都可以精確定位這些調用。

分析器在向您顯示不同線程的活動之間的分隔方面做得很好。那麼你需要知道的是,如果一個線程被暫停或顯示低處理器活動,那是因爲它阻塞了它並不真正必須的東西?堆棧樣本可以告訴你,如果他們可以在阻塞期間被採取。另一方面,如果一個線程在大量啓動,你知道它正在做什麼實際上是必要的或者可以減少嗎?堆棧樣本也會告訴你。

許多人認爲分析器的主要工作是衡量。就我個人而言,我想要一些能夠確定代碼花費大量時間並且可以更高效地完成的代碼。大多數時候這些都是功能呼叫站點,而不是「熱點」。我無需精確地知道「很多時間」。我知道它是60%+/- 20%,這對我來說非常好,因爲我正在尋找問題,而不是測量。如果由於這種不精確的原因,我解決了一個不是最大的問題,沒關係,因爲當我重複這個過程時,最大的問題會變得更大,所以我不會錯過它。

+0

哦,在那裏,我看到了種子的火焰。 「沒有人會像微軟那樣出色的應用程序」 – rpattabi 2010-08-29 02:15:18

+0

@ ragu.pattabi:我不認爲它是一個火焰。(我很有能力)。我確實認爲微軟有很棒的應用程序。同時,他們也不能免於普遍存在的誤解,至少在表現的問題上。下面是這些誤解的清單,以及如何克服它們的非常明確的積極聲明:http://stackoverflow.com/questions/1777556/alternatives-to-gprof/1779343#1779343 – 2010-08-29 16:35:14

+0

@ ragu.pattabi:如果我可以簡而言之,普遍的觀點是要優化的性能問題包括程序計數器耗費大量時間的代碼,並且需要聰明的偵測工作來找到它們。兩方面都錯了。更大的軟件是,修剪的代碼越有可能是調用樹的分支,而不是離開,並且壁時間堆棧抽樣是一種找到它們的簡單方法,它根本不需要聰明。 – 2010-08-29 16:48:00

相關問題