C/ms単位の現在時間の測定は、単純にはできない。
ms単位の時間を持つSYSTEMTIME型のデータを使う。
順序は、
1.msまで持つSYSTEMTIME型で時刻を取得。
2.SYSTEMTIME型の時刻からms単位の数を作成
3.処理の前後で2.の数を作成し、その数の差を取る。
これでms単位の処理時間を計測できる。
1.msまで持つSYSTEMTIME型で時刻を取得。
SYSTEMTIME型のデータをGetLocalTime関数に入れればOK
SYSTEMTIME systemtime;
GetLocalTime(&systemtime);
2.SYSTEMTIME型の時刻からms単位の数を作成
時間までを考慮して変換する。
これだと
計測途中に日付をまたぐと正しい時間ができない。
完全を目指すなら、年まで考慮にいれたほうがいい。
(その場合はintで足りるか?)
int time =
systemtime.wMilliseconds + 1000 * (systemtime.wSecond + 60 * (systemtime.wMinute + systemtime.wHour * 60) );
3.処理の前後で2.の数を作成し、その数の差を取る。
1.,2.の処理を
int GetTime();
の関数として以下のようなコードにすると
int timeStart = GetTime();
int timeEnd = GetTime();
int diffTime = timeEnd - timeStart;
diffTimeが欲しい処理時間になる。
最終更新:2012年08月30日 15:26