我正在将一个最初为Win32 API编写的游戏移植到Linux上(好吧,将Win32端口的OS X端口移植到Linux)。
我已经通过在进程启动后给出uSeconds来实现QueryPerformanceCounter
:
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;
}
这与QueryPerformanceFrequency()
给出一个常数1000000作为频率, 在我的机器上运行良好,给我一个64位变量,包含自程序启动以来的uSeconds
。
便携式是这样吗? 如果内核是以某种方式或类似的方式编译的,我不想发现它的工作方式不同。 不过,我很好,因为它不适用于Linux之外的其他东西。