如何精确计算出一个算法的CPU运行时间?

王朝other·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=211457

你需要多精确?

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; //得出最终结果

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航