简单的<time.h>程序需要大量的CPU

时间:2016-02-07 22:32:25

标签: c visual-studio time time.h

我试图通过在VS中编写简单的东西来熟悉C time.h库。以下代码只是每两秒打印一次x添加到自身的值:

case 1 in
  1) # entered, because it matches and is the first condition
    echo 'one'
    ;;&  # continue evaluation branch conditions
  2) # not entered, because its condition doesn't match
    echo 'two'
    ;;
  *)  # entered, because it's the next *matching* condition
    echo 'any'
    ;; # using a terminator is optional in the * branch
esac

我关注的是该程序占用的CPU数量,大约22%。我认为这个问题源于clockTemp的不断更新(正好在int main() { time_t start = time(NULL); time_t clock = time(NULL); time_t clockTemp = time(NULL); //temporary clock int x = 1; //program will continue for a minute (60 sec) while (clock <= start + 58) { clockTemp = time(NULL); if (clockTemp >= clock + 2) { //if 2 seconds has passed clock = clockTemp; x = ADD(x); printf("%d at %d\n", x, timeDiff(start, clock)); } } } int timeDiff(int start, int at) { return at - start; } 语句之下),但我不知道如何解决这个问题。这可能是视觉工作室问题,还是有特殊方法来检查时间?

解决方案

代码需要睡眠功能,因此不需要经常运行。 我添加了while的睡眠,并将#include <windows.h>放在Sleep (2000) //2 second sleep

的末尾

while

1 个答案:

答案 0 :(得分:2)

问题不在于您检查当前时间的方式。问题是没有什么可以限制循环运行的频率。您的程序会尽快执行语句,并占用大量处理器时间。 (如果没有其他程序,在单线程CPU上,它将使用100%的处理器时间。)

您需要在循环中添加“sleep”方法,这将向处理器表明它可以在短时间内停止处理您的程序。有很多方法可以做到这一点; this question有一些例子。