为什么最简单的循环加法在控制台中显示得这么慢
C++ Why the simplest loop addition displayed so slow in console?
这可能是微不足道的,但我找不到答案。我知道我的英特尔i78核处理器每秒可以计算数百万比特。
但是,控制台以慢得多的速度显示以下简单代码。在控制台中,它已经运行得很快了,但是需要一些时间才能到达最后。
这是因为MS固定了win32控制台窗口的刷新速度吗?提前感谢!for(int i=1; i<=10e8;i++){
cout<<i<<endl;
}
由于需要在屏幕上滚动文本,控制台很慢。每次向控制台写入另一行时,当前内容的图像都需要向上滚动—这一操作需要大量复制才能使平滑滚动具有动画效果。这就是经济放缓的原因。
你可以通过隐藏控制台窗口来加速这个过程:这个实现足够聪明,不会在滚动上浪费时间。另一个技巧是将控制台的高度减少到更少的行:文本开始滚动得更快,因为需要复制的信息更少。
显示速度减慢;控制台只是没有优化到以惊人的速度显示文本——如果你需要的话,你可以写一个GUI应用程序(甚至使用DirectX或其他必要的东西)。
此外,在每次迭代中刷新缓冲区也有开销(endl
相当于n
+ flush
,这意味着您在每次迭代中执行WriteFile
系统调用-因此进入内核模式),但在控制台上写入时,它通常是次要的(其中输出是行缓冲的)。
相关文章:
- 控制台输出在 Qt5 中未正确显示
- Visual Studio 2017 停止工作,并在打开后显示许多控制台窗口
- 为什么调试时没有显示控制台窗口
- 将控制台输出写入.txt并在控制台上显示
- 当被一个输入分开时,有两个控制台输出同时显示
- 如何在控制台应用程序中添加滚动功能以显示更大的输入
- 在任何 Windows 版本上全屏显示控制台
- C++:显示控制台窗口的输出
- C++:如何在控制台窗口中显示结果
- 控制台输出显示ASCII值,而不是数字的预期数字
- C++/CLI 项目如何在控制台窗口中显示消息
- Linux C LIBEV官方示例显示了冗余控制台行为
- QProcess::startDetached() 不显示控制台窗口
- 关闭应用程序而不显示控制台窗口
- 如何在C++中显示控制台应用程序中的 MFC 对话框
- 不要在发布时显示控制台窗口,而是在调试时显示
- Q使用显示控制台处理STDIN
- 如何在窗口下使用cmake在qt GUI应用程序中显示控制台
- 如何让 MATLAB 的系统() 或 dos() 实时显示控制台输出?
- C++使用 Windows 和 MinGW 在 Eclipse 中编写的程序无法显示控制台视图的输出