C++ Builder XE4 > debug > 実装: 処理時間(msec)を計測して返す関数 > debug_getElapsedTime()


動作環境
C++ Builder XE4

処理時間を計測したい

  • 処理時間を計測したい
  • 処理の合間のコール文を1行に抑えたい
    • 処理の合間に複数行のデバッグ用処理を入れたくはない

実装

static定義したpreTime に「前の時刻」を保持することで、コール文を一行に圧縮する。

DWORD __fastcall TFormMain::debug_getElapsedTime(void)
{
    static DWORD preTime = 0;

    if (true) {

    }
    DWORD elapsed;
    if (preTime > 0) {
        elapsed = GetTickCount() - preTime;
    } else {
        elapsed = 0;
    }
    preTime = GetTickCount();

    return elapsed;
}

使用例

DWORD elapsed; // 経過時間(msec)

elapsed = debug_getElapsedTime();
// 何かの処理
elapsed = debug_getElapsedTime();
int nop; // for breakpoint

nop(No Operation)の行でブレークポイントによる停止をすると、「//何かの処理」の処理時間を計測できる。

備考

  • 処理時間計測の精度は追及してはいない
    • だいたいのオーダーが分かればよい程度