0

プロファイリングを行いたいプロジェクトがありますが、それは私が制御できない別のライブラリを使用していました。そのような関数がある場合は、次のように言います。

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

library_function が、プロファイリングを有効にしてコンパイルされていない別の静的ライブラリからのものであると仮定しましょう。gprof が function、すべての子を含めて実行に 10 秒かかったと言った場合、これには で費やされた時間が含まれlibrary_functionますか?

4

1 に答える 1

2

いいえ、方法gprofが機能するため、プログラムカウンターをサンプリングし、プログラムカウンターがどの機能にあるかを把握し、その機能のセルフタイムをインクリメントします。

さらに、関数 A が関数 B を呼び出した回数をカウントします。

そこから、他のすべてを理解しようとします。

もちろん、これはそれが知っている関数に対してのみ機能します。

それは非常に賢いですが、あなたはもっとうまくやることができます.

追加: 賢明な誰かが上記の投稿を削除することを決定したため、これを改善する方法の簡単な要約を以下に示します。

代わりにこれを試してください。
44 倍の高速化の例を次に示します。
これは730倍のスピードアップです。
統計の解説はこちら。
これが批判に対する答えです。
こちらは8分間のビデオデモンストレーションです。

于 2012-08-27T18:54:59.360 に答える