0

非常に大きなコードで個別に GetTickCount() を使用して複数の関数の時間を計り、ボトルネックがどこにあるかを正確に見つけようとしています。コード全体の時間をうまく計ることができます。私が苦労しているのは、個々の機能の時間を測定するタイミング機能をどこに追加するかということです。関数が宣言されているとき、または関数が定義されているとき、または関数が呼び出されている main () 内にタイマーを挿入しますか。どんな助けでも本当に感謝しています。ありがとうございました。

4

1 に答える 1

1

実行時に呼び出されるタイミングを計ります。たとえば、次のようになります。

int main(int argc, char** argv)
{
    ...
    DWORD start = GetTickCount();
    CallAFunction();
    DWORD end = GetTickCount();
    DWORD elapsed = (end >= start) ? (end - start) : ((MAXDWORD - start) + end);
    ...
}

コードのタイミングを測定するより良い方法は、コード自体にロジックを記述する代わりに、プロファイラーを使用することです。プロファイラーはランタイム プロセスにフックし、関数自体の内部に独自のコードを挿入します。次に、関数の実行にかかる時間だけでなく、関数が呼び出された回数、どの関数がどの関数を呼び出すか、コール スタックをログに記録するなどを追跡できます。すべて追加のコードを記述する必要はありません。

于 2012-01-06T03:05:11.803 に答える