| |
VC++通过汇编获取代码运行时间 |
责任编辑:ljx |
| [04-6-17 12:14]
| 作者:hcj2002
| 如何获得程序或者一段代码运行的时间?你可能说有专门的程序测试工具,确实,不过你也可以在程序中嵌入汇编代码来实现。
在Pentium的指令系统中有一条指令可以获得CPU内部64位计数器的值,我们可以通过代码两次获取该计数器的值而获得程序或代码运行的时钟周期数,进而通过你的cpu的频率算出一个时钟周期的时间,从而算出程序运行的确切时间。
我们通过指令TDSIC来获得cpu内部计数器的值,指令TDSIC返回值放在EDX:EAX中,其中EDX中存放64位寄存器中高32位的值,EAX存放第32位的值. 下面看看实现的代码:
| //用汇编实现获取一段代码运行的时间 #include<iostream> using namespace std; void GetClockNumber (long high, long low); void GetRunTime(); int main() { long HighStart,LowStart,HighEnd,LowEnd; long numhigh,numlow; //获取代码运行开始时cpu内部计数器的值 __asm { RDTSC mov HighStart, edx mov LowStart, eax } for(int i= 0; i<100000; i++ ) { for(int i= 0; i<100000; i++ ) { } } |
|