如何在没有标准库的情况下制作自己的计时器?

时间:2015-06-14 11:23:38

标签: c++ loops timer

是否有一些特定的迭代次数,我可以使用for loop进行迭代,因此完全执行循环需要1秒钟?例如,以下代码在我的机器上执行了0.125秒:

#include <iostream>
#include <cmath>

using namespace  std;

int main(){
    long long a=0;

    for (a=0;a<=pow(10,4);a++);
}

虽然,&lt; = 8 * pow(10,4)花了0.206秒。编译器是GCC 4.9.2。 IDE是代码块。

我的电脑的规格:操作系统:Windows 8.1 enter image description here

1 个答案:

答案 0 :(得分:0)

根据收到的评论,我发布了您的问题的答案。

无法制作计时器,因为:

  • 迭代所需的时间是不可预测的,这不仅取决于所使用的CPU,还需要考虑电源管理(调度程序)。 (通过tux3)
  • 必须使用实时操作系统来实现这一目标。非实时操作系统中存在太多抖动。 Windows可能会决定暂时安排其他进程,或者使用CPU进行处理。内核网络,磁盘I / O等优先于时间。 (由nos)

  • 只能在标准C ++中的托管环境中“制作自己的计时器”。定时器本质上是一种与OS调度程序通信的机制,并且需要特定于平台的OS服务。 (由Kerrek SB提供)

  • 编译器会优化这样的循环,并通过死码消除(通过πάνταῥεῖ和Jongware)将其删除。