Sto portando un gioco, che era stato originariamente scritto per l'API Win32, su Linux (beh, portando il port OS X del port Win32 su Linux).
L'ho implementato QueryPerformanceCounter
fornendo gli uSecondi dall'inizio del processo:
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;
}
Questo, insieme a QueryPerformanceFrequency()
dare una frequenza costante di 1000000, funziona bene sulla mia macchina , dandomi una variabile a 64 bit che contiene uSeconds
sin dall'avvio del programma.
Quindi è portatile? Non voglio scoprire che funziona in modo diverso se il kernel è stato compilato in un certo modo o qualcosa del genere. Comunque mi va bene che non sia portabile su qualcosa di diverso da Linux.