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

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

你需要多精确?  

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;  //得出最终结果
相关文章
|
11月前
土方量的几种计算方法
土方量的几种计算方法
236 1
|
传感器 监控 Java
如何正确理解 CPU 使用率和平均负载的关系?看完你就知道了
CPU(Central Processing Unit)是计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元,相当于系统的“大脑”。
2371 0
如何正确理解 CPU 使用率和平均负载的关系?看完你就知道了
|
30天前
|
C++
C++ 根据程序运行的时间和cpu频率来计算在另外的cpu上运行所花的时间
C++ 根据程序运行的时间和cpu频率来计算在另外的cpu上运行所花的时间
32 0
|
Java Maven
如何计算程序运行时间
如何计算程序运行时间
109 0
|
算法 数据可视化
计算代码运行时间的 5 种方法
计算代码运行时间的 5 种方法
616 0
|
Java C#
计算某一段程序消耗的内存和时间【C#】
计算某一段程序消耗的内存和时间【C#】
128 0
|
算法
算法运行时间
   1  大部分程序的大部分指令之执行一次,或者最多几次。如果一个程序的所有指令都具有这样的性质,我们说这个程序的执行时间是常数。  logN   如果一个程序的运行时间是对数级的,则随着N的增大程序会渐渐慢下来,如果一个程序将一个大的问题分解成一系列更小的问题,每一步都将问题的规 模缩减成几分之一 ,一般就会出现这样的运行时间函数。
1512 0