你需要多精确?
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; //得出最终结果