私はGetTimeヘルパ関数を実装しようとしています。カウントで計測された現在の時刻が取得され、システムの1秒あたりのカウント数が取得されるため、現在の時刻をその関係で秒単位で取得できます。これらのタイムカウンタリファインメントステートメントの目的は何ですか?
しかし、その後、実際には得られない改善コードがいくつかあります。なぜそこに最後の2つのステートメントですか?
double GetTime()
{
// Current time value, measured in counts
__int64 timeInCounts;
QueryPerformanceCounter((LARGE_INTEGER *)(&timeInCounts));
// To get the frequency (counts per second) of the performance timer
__int64 countsPerSecond;
QueryPerformanceFrequency((LARGE_INTEGER *)(&countsPerSecond));
double r, r0, r1;
// Get the time in seconds with the following relation
r0 = double (timeInCounts/countsPerSecond);
// There is some kind of acuracy improvement here
r1 = (timeInCounts - ((timeInCounts/countsPerSecond)*countsPerSecond))
/(double)(countsPerSecond);
r = r0 + r1;
return r;
}
こんにちは、r0はちょうど秒単位の時間ですが、式を単純化するとr1は常に0になるはずですが、そうではありません。なぜそれが計算されているのか、それがなぜそこになければならないのか分かりません。私はそれがいくつかの精度向上と一緒にいなければならないと思うが、私はそれが何をしているかは言えなかった。 – Shomismo
'r1'の値を調べると、0より大きく1より小さい値があることがわかります。 'countsPerSecond'は' double'にキャストされるので、 'r1'は整数除算の結果ではありません。 –
そうです。あなたはそうすることで、より鋭い結果を得ますか? r0計算よりも正確ですか(それもドブルとしてキャストされます)? – Shomismo