feat(timer): improve high-FPS timing with high-resolution Windows clock
This commit is contained in:
@@ -52,7 +52,22 @@ void System::arraycopy(arrayWithLength<int> src, unsigned int srcPos, arrayWithL
|
||||
//The current value of the system timer, in nanoseconds.
|
||||
__int64 System::nanoTime()
|
||||
{
|
||||
#if defined _WINDOWS64 || defined _XBOX || defined _WIN32
|
||||
static LARGE_INTEGER s_frequency = { 0 };
|
||||
if (s_frequency.QuadPart == 0)
|
||||
{
|
||||
QueryPerformanceFrequency(&s_frequency);
|
||||
}
|
||||
|
||||
LARGE_INTEGER counter;
|
||||
QueryPerformanceCounter(&counter);
|
||||
|
||||
// Using double to avoid 64-bit overflow during multiplication for long uptime
|
||||
// Precision is sufficient for ~100 days of uptime.
|
||||
return (__int64)((double)counter.QuadPart * 1000000000.0 / (double)s_frequency.QuadPart);
|
||||
#else
|
||||
return GetTickCount() * 1000000LL;
|
||||
#endif
|
||||
}
|
||||
|
||||
//Returns the current time in milliseconds. Note that while the unit of time of the return value is a millisecond,
|
||||
|
||||
Reference in New Issue
Block a user