编辑:
我要感谢大家的快速回复^^ Sleep() 按预期工作,我的 CPU 不再被这个程序恶意吞噬!我会保持这个问题不变,但要让大家知道 CPU 问题已经得到了方便和专业的回答:D
顺便说一句,面对更大、更重要的问题,我肯定会确保将微优化保持在最低限度!
==================================================== ===============================
出于某种原因,我的程序(我为欢笑和练习而制作的控制台闹钟)占用大量 CPU 资源。它消耗大约 2mB 的 RAM,对于这样一个小程序来说已经相当多,但它有时会以超过 50% 的资源破坏我的 CPU。
大多数时候我的程序除了倒计时什么都不做,所以我想我的程序的这部分是对我的 CPU 造成如此大压力的部分,尽管我不知道为什么。如果是这样,您能否推荐一种减少它的方法,或者如果问题不能轻易解决,也许可以使用一个库来代替?
/* The wait function waits exactly one second before returning to the *
* called function. */
void wait( const int &seconds )
{
clock_t endwait; // Type needed to compare with clock()
endwait = clock() + ( seconds * CLOCKS_PER_SEC );
while( clock() < endwait ) {} // Nothing need be done here.
}
如果有人浏览 CPlusPlus.com,这是他们作为 clock() 示例编写的 clock() 函数的真正复制/粘贴。这就是为什么评论//Nothing need be done here
如此乏味的原因。我还不完全确定 clock() 到底是做什么的。
程序的其余部分调用其他两个函数,每六十秒激活一次,否则返回调用者并倒计时一秒,所以我不认为这太占用 CPU - 虽然我不知道,这是我的第一次尝试在优化代码。
第一个功能是控制台清除system("cls")
,我知道使用它真的非常慢而且不是一个好主意。我将更改那个 post-haste,但是,因为它每 60 秒才激活一次,并且有一个明显的滞后峰值,我知道大多数时候这不是问题。
第二个功能也仅每六十秒用更新的剩余时间重写屏幕内容。
如果很明显这个函数不是问题,我将在调用 wait、clearScreen 和 display 的函数中进行编辑。我已经尝试引用大多数变量,因此它们不会被复制,并避免endl
因为我听说它与\n
.