C++中的获取高精度时间差_C/C++语言_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

C++中的获取高精度时间差

作者:黑客防线网安C/C++教程基地 来源:黑客防线网安C/C++教程基地 浏览次数:0

本篇关键词:时间获取可以方法
黑客防线网安网讯:  解决一个问题通常有多种方法, 我们总想找到最高效的,所以需要对比不同算法执行所用的时间。可惜的是,C++中提供的方法一般只能精确到毫秒级。  提供一种更加精确的方法。编写一个函...
  解决一个问题通常有多种方法 我们总想找到最高效的所以需要对比不同算法执行所用的时间可惜的是,C++中提供的方法一般只能精确到毫秒级
  提供一种更加精确的方法。编写一个函数,可以在C++中这样写:
  __declspec (naked) unsigned __int64 GetCpuCycle( void )
  {
  _asm
  {
  rdtsc
  ret
  }
  }
  RDTSC的返回值存放在EDX EAX中, EDX为高32位,EAX为低32位。这里的 RDTSC 指令( Read Time Stamp Counter ), 获得CPU的高精度时间戳。
  这样以来我们就可以在随处获得当前的CPU自上电以来的时间周期数了:
  unsigned __int64 iCpuCycle = GetCpuCycle();
  根据这个数字我们可以计算出上电以来所经历的时间( 秒s ):
  second = iCpuCycle / CPU主频率( HZ );
  1GHZ = 1,000 MHZ = 1,000,000 KHZ = 1,000,000,000 HZ;
  获取两次作差就可以得到运行的时间了。其实没必要换算成时间,关注差值就行了。
  PS:
  可以放心一个unsigned __int64 不会溢出 - - 可以计算一下你的CPU能保存多少年的时间。。
  根据这一方法有几个好处: 一是精度高,二是函数调用开销最小,三是平台限制小,四是具有和CPU主频相对应的直接关系。。。 但是由于精度高,得到的数字浮动比较大。。
    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-15416-1.html
网站维护教程更新时间:2012-04-04 22:54:29  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer