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

    技术2022-05-11  140

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


    最新回复(0)