我运行了以下程序,让我的电脑执行了94秒(我有一台带有4 Gb内存的i5 3.2 GHz cpu)。
我认为打印一百万个数字94秒并不快。有没有办法让它更快?
另外,为什么当我不知道我的计数器变量时程序以0.016秒结束? (它真的在0.016秒的时间段内循环了一百万次吗?)
#include <iostream>
int main()
{
for (int counter{1}; counter <= 1e6 ; ++counter)
{
std::cout << counter << " ";
}
return 0;
}
答案 0 :(得分:1)
这个问题与计算速度&#34;无关。也没有&#34;使程序更快&#34;。递增计数器几乎不算作计算,并且向控制台发送文本的性能开销(即,调用"app":15a
)掩盖了将变量 递增几个数量级的计算成本。 / EM> 强>
所以,这个问题是关于向控制台发送文本的速度慢。
将文本发送到控制台通常被视为不需要非常高效的东西,因此在大多数情况下,它在大多数操作系统中都很慢。这是一种不幸的情况,因为软件通常在我们开发时向控制台发送文本,因此它会减慢开发过程,但这并不算太糟糕,因为生产环境中的软件通常不会这样做:日志被写入文本文件,这要快得多。
另外,请记住,向控制台发送文本的过程涉及辅助开销因素,例如滚动:一旦屏幕填满文本,每个新的文本行都会导致控制台窗口滚动。那也很贵。
那么,想让你的打印程序运行得更快吗?启动后立即最小化控制台窗口;然后立即将其恢复到原始尺寸;你会发现它会完成。几乎所有的开销都是显示文本和滚动窗口。