時間経過をミリ秒で取得する方法を知っている方教えてください。
time_t start, finish;
double elapsed_time;
time( &start );
・・・・・
time( &finish );
elapsed_time = difftime( finish, start );
今はこんな感じなんですが、どなたかお教え願います。
SYSTEMTIMEとGetLocalTimeで調べてみてください。
普段作ってるものが連続起動を考慮しなくてよいものばかりなので、
何も考えずに、
DWORD dwStart = GetTickCount();
(中略)
DWORD dwEnd = GetTickCount();
DWORD elapsed_time = dwEnd - dwStart;
としています。
DWORD timeGetTime(VOID);
が精度いいかも
winmm.libを追加しなきゃいけないけど・・・
QueryPerformanceCounter() はどうかな。
精度はあなたのPCの能力次第ですが。
time系の関数はカウンタ値を呼び出し時に時刻に変換している
と考えられるので、高精度を求めるなら、変換は計測後に行ないたい。
カウンタ値の生の値で開始、停止時を取得して、
後で、QueryPerformanceFrequency()の値で割り算してやります。
なお、事前に 2回連続で呼び出して差をとっておき、この
関数自体の呼び出しオーバヘッドを測定しておく必要もあります。
数十回測定して、この数値の最大-最小が誤差ですね。
他のアプリが動作していないのが望ましい。
確認:
(star/q) - ( end/q ) と
(start - end ) / q は同じか?
LARGE_INTEGER。
__int64 で宣言してほしかった。
あと、prep ってコマンドについても調べてみてください(Win2K)。
遅くなりました!
たくさんの方法でできました。
みなさんもありがとうございました。
ツイート | ![]() |