这段代码能够在Visual Studio .NET 2003中顺利运行,在以前的C/C++编译器中也应该没有问题。RDTSC(ReaD
Time Stamp Counter)是一个汇编指令,它的功能是把时间戳计数器的内容装入EAX和EDX寄存器。执行上述代码后,start_ticks就包含了完整的时钟计数。再次调用上面的代码,把start_ticks替换成end_ticks,再从end_ticks减去start_ticks,就得到了两次调用期间流逝的时钟周期。
要输出这个_int64值,可以使用下面的printf()掩码:
printf ( "Function used %I64Ld ticks\n", end_ticks.int64val.i64 -
start_ticks.int64val.i64 );
如果要把时钟计数转换成时间,只要把时钟计数除以CPU的时钟频率就可以了。不过,芯片上标准的GHz数据往往与实际运行的速度不同。如果要测试芯片的实际速度,除了Win32调用QueryPerformanceFrequency(),还有几种非常好的工具软件。这里要推荐两种工具,首先是Intel自己的Processor
Frequency ID Utility,可以从http://support.intel.com/support/