2013-03-12 86 views
1

我們開發了基於Windows C++控制檯的網絡密集型應用程序,該應用程序在數據通信期間似乎很慢。Profiler for Windows C++(基於控制檯的網絡應用程序)

代碼庫非常龐大,所以我正在尋找一個探查器工具,它可以指向特定函數/代碼行,這是整體性能的瓶頸。

我嘗試使用VS 2010中的「性能工具」,但它崩潰了,現在我運行它來分析應用程序。

Error Message: Injection of Runtime library failed. 

而且,我試着用很困,但我看不到我的功能在裏面,可能是因爲它不能指向源代碼(但是不知道,可我mightnot正確地使用它)

有人可以爲基於Windows C++控制檯的應用程序提供一些好的免費可用分析器嗎?

基於評估,我們也將繼續探索商業版本。

很多預先感謝。

回答

4

如果您使用的是基於Intel的機器,我會使用VTune。如果它是在AMD機器上,CodeAnalyst是類似的產品。

我相信VTune有試用許可證。 CodeAnalyst免費提供。

這些工具不是基於控制檯的,但它們可用於分析基於控制檯的應用程序。

+0

適用於Windows的英特爾®VTune™Amplifier XE – RDX 2013-03-12 09:15:43

0

我們的C++ Profiler工具應該工作。

它並不關心你的應用程序如何執行I/O操作(例如,「基於控制檯」)。它處理巨大的文件系統。它還處理C++的GNU和MS方言,以及C++ 11。

商業。 (我懷疑你會發現一個適用於MS Visual C++的免費分析器)。

+0

可以在我們計劃購買之前用於評估目的 – RDX 2013-03-12 09:31:37

+0

在網站上有一個評估版下載。你可以運行它來了解它是如何運作的,但在評估過程中它不會處理你的巨型計劃。 – 2013-03-12 09:33:13

1

有可能會有幾個「問題」,或使其更快的方法。 我不會稱他們爲「瓶頸」,因爲他們經常沒有本地化。 通常他們是非常好的代碼 - 它從來沒有假設他們會在「關鍵路徑」上。

假設的問題,固定時,將保存這些百分比:

enter image description here

就發現其中一個會給你一定的加速比。 就像你剛剛找到A一樣,那會讓你加速1 /(1-0.3)= 1.43或43%。 如果你這樣做了,你可以像大多數人一樣快樂並停下來。然而,如果你繼續並發現B,你的總加速比將是1 /(1-0.51)= 2.04或104%。 儘管B小於A,但這比B的43%多很多。 C修正使您的速度提高了2.92倍,D提升了4.2倍。

什麼?解決小問題有更高的回報? 他們可以,因爲加速因素複合。 以此順序修復A和B會使您的1.43 * 1.43 = 2.04。 如果你碰巧修復他們在相反的順序,你得到1.27 * 1.61 = 2.04

每次你修復的東西,其他問題變得更大,百分比和更容易找到,並加速積累像一個高分辨率,收益投資。 當你修復A,B,C,D和E時,剩下的一個是F,它不是5%,它是30%。 修復所有這些問題,現在您的速度提高了8.5倍! 然而,如果你錯過了一個,比如D,因爲你的分析工具無法公開它,你只有4.5倍的速度。

這就是您爲找不到問題付出的代價。

這就是爲什麼我依靠a manual technique,因爲,相對於探查器,它找到了他們找到的所有問題,並找到了他們不知道的問題。 配置文件經常關注外設問題,如測量的準確性,這無助於發現問題。 如果你想知道爲什麼,here's the math

相關問題