もともとWin32API用に作成されたゲームをLinuxに移植しています(Win32ポートのOS XポートをLinuxに移植しています)。
QueryPerformanceCounter
プロセスの開始以来、uSecondsを指定し て実装しました。
BOOL QueryPerformanceCounter(LARGE_INTEGER* performanceCount)
{
gettimeofday(¤tTimeVal, NULL);
performanceCount->QuadPart = (currentTimeVal.tv_sec - startTimeVal.tv_sec);
performanceCount->QuadPart *= (1000 * 1000);
performanceCount->QuadPart += (currentTimeVal.tv_usec - startTimeVal.tv_usec);
return true;
}
これは、周波数として定数1000000を与えることと相まって、私のマシンQueryPerformanceFrequency()
でうまく機能し、プログラムの起動以降に含まれる64ビット変数を与えてくれます。uSeconds
それで、これはポータブルですか?カーネルが特定の方法でコンパイルされた場合など、動作が異なることを知りたくありません。ただし、Linux以外には移植できないので問題ありません。