/* CLOCK.C: This example prompts for how long * the program is to run and then continuously * displays the elapsed time for that period. */#include <stdio.h> #include <stdlib.h> #include <time.h>void sleep( clock_t wait );void main( void ) { long i = 600000L; clock_t start, finish; double duration; /* Delay for a specified time. */ printf( "Delay for three seconds\n" ); sleep( (clock_t)3 * CLOCKS_PER_SEC ); printf( "Done!\n" ); /* Measure the duration of an event. */ printf( "Time to do %ld empty loops is ", i ); start = clock(); while( i-- ) ; finish = clock(); //下面计算时间 duration = (double)(finish - start) / CLOCKS_PER_SEC; printf( "%2.1f seconds\n", duration ); }/* Pauses for a specified number of milliseconds. */ void sleep( clock_t wait ) { clock_t goal; goal = wait + clock(); while( goal > clock() ) ; }运行结果:Delay for three seconds Done! Time to do 600000 empty loops is 0.1 seconds
rdtfc(?记不清楚了),就可以得到开机以来的时间,最精确无比。
* the program is to run and then continuously
* displays the elapsed time for that period.
*/#include <stdio.h>
#include <stdlib.h>
#include <time.h>void sleep( clock_t wait );void main( void )
{
long i = 600000L;
clock_t start, finish;
double duration; /* Delay for a specified time. */
printf( "Delay for three seconds\n" );
sleep( (clock_t)3 * CLOCKS_PER_SEC );
printf( "Done!\n" ); /* Measure the duration of an event. */
printf( "Time to do %ld empty loops is ", i );
start = clock();
while( i-- )
;
finish = clock();
//下面计算时间
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%2.1f seconds\n", duration );
}/* Pauses for a specified number of milliseconds. */
void sleep( clock_t wait )
{
clock_t goal;
goal = wait + clock();
while( goal > clock() )
;
}运行结果:Delay for three seconds
Done!
Time to do 600000 empty loops is 0.1 seconds