Saya mem-porting game, yang aslinya ditulis untuk Win32 API, ke Linux (baik, port OS X dari port Win32 ke Linux).
Saya telah menerapkan QueryPerformanceCounter
dengan memberikan uSeconds sejak proses dimulai:
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;
}
Ini, ditambah dengan QueryPerformanceFrequency()
memberikan 1000000 konstan sebagai frekuensi, bekerja dengan baik pada mesin saya , memberi saya variabel 64-bit yang berisi uSeconds
sejak program dimulai.
Jadi, apakah ini portabel? Saya tidak ingin menemukannya bekerja secara berbeda jika kernel dikompilasi dengan cara tertentu atau semacamnya. Saya baik-baik saja dengan itu menjadi non-portabel untuk sesuatu selain Linux.