怎样在C++中获得高精度时间差呢?

    作者:课课家教育更新于: 2016-12-09 13:58:55

    大神带你学编程,欢迎选课

      今天我们主要来学习一下:怎样在C++中获得高精度时间差呢?大家都应该知道方法总比困难多,要解决这个问题方法真的有很多种。但是并不是所有的方法都是最高效最直接的,那么我们就需要进行对比一下不同算法所要执行的时间。但更可惜的是,在C++中为我们提供的方法一般都只可以精确到毫秒级而已。相信这个问题大家都非常的有兴趣,那么现在就让我们一起来学习一下吧。

    怎样在C++中获得高精度时间差呢?_C++_编写函数_编程代码_课课家

      编写函数:

      首先我们要做的就是:提供一种可以更加精确的方法,那就是进行编写函数了。我们可以在c++程序中这进行编写函数,具体的编程代码,如下图:

    编写函数

      大家在代码汇总,应该有看到RDTSC的英文字母,那么它的作用究竟是什么呢?其实它的返回值就是存放在EDXEAX中,那么EAX为低32位,EDX则为高32位。在这里的RDTSC指令(全称:ReadTimeStampCounter),就是用来获取CPU中的高精度时间戳。

      这样子的话,我们就可以在随处获得当前的CPU(中央处理器,全称:CentralProcessingUnit)自上电以来的时间周期数了。获取时间周期数,具体的代码如下:

      unsigned__int64iCpuCycle=GetCpuCycle();

      计算时间:

      其实我们只要根据这个数字,就可以计算出上电以来所经历的时间(秒s)。大家不妨可以尝试一下,具体的实现方法如下图:

    计算时间

      如果大家想要得到一个运行的时间,那么只要获取两次的作差即可。有些朋友想要换算成为时间,其实小编觉得这是没有必要的,我们只要稍微留意一下差值就可以了。

      温馨提示:

      1.大家可以非常的放心一个unsigned__int64是并不会进行溢出——也可以尝试着计算一下大家的CPU究竟可以保存到多少年的时间。

      2.如果大家使用这一种方法,究竟有什么好处呢?好处真的是多的是咯,如下:

      ①平台限制会变得更小;

      ②精度会变得更高;

      ③具有与CPU主频相对应的一种直接关系;

      ④函数调用开销最小。

      但是我们在这里还要注意一点,那就是因为精度过高的原因,所以我们所获得的数字浮动会稍微有点大。

      小编结语:

      大家通过这篇编程语言教程可以看到,小编主要是为你介绍怎样在C++中获得高精度时间差,是不是非常的简单易学?欢迎大家来到课课家教育,在这里我们会给大家整理出很多的精彩内容。

C++ 更多推荐

课课家教育

未登录

1