为什么最简单的循环加法在控制台中显示得这么慢

C++ Why the simplest loop addition displayed so slow in console?

本文关键字:显示 控制台 最简单 循环 为什么      更新时间:2023-10-16

这可能是微不足道的,但我找不到答案。我知道我的英特尔i78核处理器每秒可以计算数百万比特。

但是,控制台以慢得多的速度显示以下简单代码。在控制台中,它已经运行得很快了,但是需要一些时间才能到达最后。

这是因为MS固定了win32控制台窗口的刷新速度吗?提前感谢!
for(int i=1; i<=10e8;i++){
    cout<<i<<endl;
}

由于需要在屏幕上滚动文本,控制台很慢。每次向控制台写入另一行时,当前内容的图像都需要向上滚动—这一操作需要大量复制才能使平滑滚动具有动画效果。这就是经济放缓的原因。

你可以通过隐藏控制台窗口来加速这个过程:这个实现足够聪明,不会在滚动上浪费时间。另一个技巧是将控制台的高度减少到更少的行:文本开始滚动得更快,因为需要复制的信息更少。

显示速度减慢;控制台只是没有优化到以惊人的速度显示文本——如果你需要的话,你可以写一个GUI应用程序(甚至使用DirectX或其他必要的东西)。

此外,在每次迭代中刷新缓冲区也有开销(endl相当于n + flush,这意味着您在每次迭代中执行WriteFile系统调用-因此进入内核模式),但在控制台上写入时,它通常是次要的(其中输出是行缓冲的)。