计算速度/使程序更快

时间:2016-12-11 12:54:53

标签: c++ c++11

我运行了以下程序,让我的电脑执行了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;
}

1 个答案:

答案 0 :(得分:1)

这个问题与计算速度&#34;无关。也没有&#34;使程序更快&#34;。递增计数器几乎不算作计算,并且向控制台发送文本的性能开销(即,调用"app":15a)掩盖了将变量 递增几个数量级的计算成本。 / EM>

所以,这个问题是关于向控制台发送文本的速度慢。

将文本发送到控制台通常被视为不需要非常高效的东西,因此在大多数情况下,它在大多数操作系统中都很慢。这是一种不幸的情况,因为软件通常在我们开发时向控制台发送文本,因此它会减慢开发过程,但这并不算太糟糕,因为生产环境中的软件通常不会这样做:日志被写入文本文件,这要快得多。

另外,请记住,向控制台发送文本的过程涉及辅助开销因素,例如滚动:一旦屏幕填满文本,每个新的文本行都会导致控制台窗口滚动。那也很贵。

那么,想让你的打印程序运行得更快吗?启动后立即最小化控制台窗口;然后立即将其恢复到原始尺寸;你会发现它会完成。几乎所有的开销都是显示文本和滚动窗口。