你需要多精确?
GetTickCount可以到18-20ms进度
timeGetTime可以到1ms精度
……
当然这些都不是C or c++ 标准支持的。
那么就要祭出最牛奔的方法,
直接读取CPU开机以来执行的机器周期数,
一条汇编指令:RDTSC (就是 ReaD TimeStamp Count)
精度可以达到ns级别。(准确地说精度是1 / 你的CPU的时钟频率,这也是极限)
long HighStart,LowStart,HighEnd,LowEnd; long numhigh,numlow; __asm { RDTSC mov HighStart, edx mov LowStart, eax // put your time-consuming code here …… RDTSC mov HighEnd, edx mov LowEnd, eax //获取两次计数器值得差 sub eax, LowStart cmp eax, 0 jg L1 neg eax jmp L2 L1: mov numlow, eax L2: sbb edx, HighStart mov numhigh, edx } __int64 timer =(numhigh<<32) + numlow; //得出最终结果