2012-08-27 50 views
0

我現在有一個我想要分析的項目,但它使用了另一個我無法控制的庫。說出是否有這樣的功能:gprof中包含的時間是否包含未分析的函數所花費的時間?

#include <library.h> 
void function(...) 
{ 
    // do something 
    for (...) 
    { 
     // ... 
     library_function(...); 
     // ... 
    } 
    // do something 
} 

我們假設library_function來自另一個靜態庫,它不是編譯時啓用了配置文件。現在如果gprof告訴我運行function花費了10s包括所有的孩子,這是否包括花在library_function上的時間?

回答

2

不,因爲gprof的工作方式,它採樣程序計數器,計算程序計數器在哪個函數中,並增加該函數的自身時間。

此外,它計算任何函數的調用的任何函數B.

從這個次數,它試圖弄清楚一切了。

當然,這隻適用於它所知道的功能。

這很聰明,但you can do better

新增:因爲有人在他們的智慧決定刪除上述帖子,這裏是你如何能做到更好的簡短摘要:

Try this instead.
Here's an example of a 44x speedup.
Here's a 730x speedup.
Here's an explanation of the statistics.
Here's an answer to critiques.
Here's an 8-minute video demonstration.

+0

非常感謝您的澄清。但不幸的是我正在開發一個NDK庫。我還沒找到工作。 – fefe

+0

@fefe:沒有調試器可以運行下面的代碼嗎?如果你可以通過Ctrl-C或其他方式打斷它,那就是你所需要的。 –

+0

我試過了,我相信它應該是有用的。但是我的調試器現在有一些問題,現在不能跟隨(或停止在內部斷點)原生代碼。所以我唯一得到的是我的圖書館花了很多時間,但不是在哪裏。但是這不在這個問題的範圍之內。 – fefe

相關問題