/* =============== MeasureClockTicks =============== */ double MeasureClockTicks( void ) { double t0, t1; t0 = Sys_GetClockTicks( ); Sys_Sleep( 1000 ); t1 = Sys_GetClockTicks( ); return t1 - t0; }
/* ======================== Sys_Microseconds ======================== */ uint64 Sys_Microseconds() { static uint64 ticksPerMicrosecondTimes1024 = 0; if ( ticksPerMicrosecondTimes1024 == 0 ) { ticksPerMicrosecondTimes1024 = ( (uint64)Sys_ClockTicksPerSecond() << 10 ) / 1000000; assert( ticksPerMicrosecondTimes1024 > 0 ); } return ((uint64)( (int64)Sys_GetClockTicks() << 10 )) / ticksPerMicrosecondTimes1024; }
uint64 Sys_Microseconds() { #if 0 static uint64 ticksPerMicrosecondTimes1024 = 0; if( ticksPerMicrosecondTimes1024 == 0 ) { ticksPerMicrosecondTimes1024 = ( ( uint64 )Sys_ClockTicksPerSecond() << 10 ) / 1000000; assert( ticksPerMicrosecondTimes1024 > 0 ); } return ( ( uint64 )( ( int64 )Sys_GetClockTicks() << 10 ) ) / ticksPerMicrosecondTimes1024; #elif 0 uint64 curtime; struct timespec ts; clock_gettime( CLOCK_MONOTONIC, &ts ); curtime = ts.tv_sec * 1000000 + ts.tv_nsec / 1000; return curtime; #else uint64 curtime; struct timespec ts; clock_gettime( D3_CLOCK_TO_USE, &ts ); if( !sys_microTimeBase ) { sys_microTimeBase = ts.tv_sec; return ts.tv_nsec / 1000; } curtime = ( ts.tv_sec - sys_microTimeBase ) * 1000000 + ts.tv_nsec / 1000; return curtime; #endif }
double idSysLocal::GetClockTicks() { return Sys_GetClockTicks(); }