2012-02-19 43 views
3

我試圖找到一個分析工具,我可以發現,在C/C++程序中每行代碼花費多少時間。我正在開發主要使用gcc的Linux平臺(Ubuntu,Gentoo,SL)。我使用gprof,但有時我需要「每行」信息。我如何知道C/C++代碼中每行花了多少時間?

有什麼建議嗎?謝謝!

+1

在GCC中,您可以用'-pg'編譯並使用'gprof'。這並不完全是「按線」,而是與此相當接近。 – 2012-02-19 21:50:55

+5

哪個是您的平臺? – rotoglup 2012-02-19 21:50:58

+0

@Kerrak:我忘了提及,我使用gprof,但有時它必須是「每行」。 – steffen 2012-02-19 21:52:09

回答

2

在linux上,你可以使用oprofile。這是一個基於樣例的分析器,它幾乎可以在任何平臺上運行,並在性能監視寄存器可用時支持它們。在x86上,它可以與AMD和英特爾合作。

你可以使用它作爲獨立的程序,它會給你一個註釋的源代碼,但是有一個可用的插件(linuxtools)用於Eclipse,它很好地集成到IDE中。

1

AMD CodeAnalyst是你最好的選擇,它是完全免費的,它可以在windows和linux上運行,雖然它主要用於AMD CPU,所以非AMD CPU不會得到基於MSR的性能分析選項。在Windows下,它也很好地集成了2010年的Visual Studio 2008 &。

對於非供應商特定的免費配置文件,您可以嘗試very sleepy,這也恰好是開源的。

1

Zoom做什麼是在壁鐘時間採取堆棧樣本。

然後,任何函數或代碼行負責的時間百分比就是它出現的樣本的分數。 例如,如果一行代碼佔堆棧樣本的30%,並且您可以避免執行它,則總執行時間將減少30%。無論I/O,遞歸,競爭進程如何,這都是正確的,交換所有混淆了許多配置文件的東西。

+0

+1有趣。必須嘗試一個。 – hirschhornsalz 2012-02-20 01:02:54

+0

@drhirsch:正如你從我們之前的談話中所知道的那樣,有些事情Zoom也不容易找到,但是作爲個人檔案,它正在做所有正確的事情,恕我直言。 – 2012-02-20 01:20:42

相關問題