#include #include int main( void ) { size_t i; double dProcessorFrequency = 2829200000.0L; double dTscCC = ( double )( 1.0L ); double dTscNS = ( double )( 1000000000.0L / ( double )dProcessorFrequency ); double dTscMU = ( double )( 1000000.0L / ( double )dProcessorFrequency ); double dTscMS = ( double )( 1000.0L / ( double )dProcessorFrequency ); printf( "RDTSC instruction latency:\n" ); unsigned __int64 iClocks1 = __rdtsc(); unsigned __int64 iClocks2 = __rdtsc(); printf( "\tClock cycles (cc): %20.7f\n", ( double )( iClocks2 - iClocks1 ) * dTscCC ); printf( "\tNano seconds (ns): %20.7f\n", ( double )( iClocks2 - iClocks1 ) * dTscNS ); printf( "\tMicro seconds (mu): %20.7f\n", ( double )( iClocks2 - iClocks1 ) * dTscMU ); printf( "\tMilli seconds (ms): %20.7f\n", ( double )( iClocks2 - iClocks1 ) * dTscMS ); printf( "\n" ); printf( "Sleep Win32 API function Non Determinism:\n" ); for( i = 0; i < 30; i += 1 ) { unsigned __int64 iClocks1 = __rdtsc(); Sleep( 1000 ); unsigned __int64 iClocks2 = __rdtsc(); // printf( "\tClock cycles (cc): %20.7f\n", ( double )( iClocks2 - iClocks1 ) * dTscCC ); // printf( "\tNano seconds (ns): %20.7f\n", ( double )( iClocks2 - iClocks1 ) * dTscNS ); // printf( "\tMicro seconds (mu): %20.7f\n", ( double )( iClocks2 - iClocks1 ) * dTscMU ); printf( "\tMilli seconds (ms): %20.7f\n", ( double )( iClocks2 - iClocks1 ) * dTscMS ); } }