这可能是微不足道的,但我找不到答案。我知道我的Intel i7 8核心处理器每秒可以计算数百万比特。
但是,控制台以较慢的速度显示以下简单代码。在控制台中,它已经很快,但需要一些时间才能结束。
这是因为MS修复了win32控制台窗口的刷新速度吗?提前谢谢!
for(int i=1; i<=10e8;i++){
cout<<i<<endl;
}
答案 0 :(得分:8)
控制台很慢,因为需要在屏幕上滚动文本。每次向控制台写入另一行时,当前内容的图像都需要向上滚动 - 需要大量复制才能动画平滑滚动的操作。这就是为什么会出现放缓的原因。
您可以通过隐藏控制台窗口来加快进程:实现足够智能,不会浪费时间滚动。另一个技巧是将控制台的高度减少到更少的行:文本开始滚动的速度要快得多,因为需要复制的信息较少。
答案 1 :(得分:4)
减速来自显示数据;控制台没有优化以令人难以置信的速度显示文本 - 如果您需要,您可以编写GUI应用程序(或者甚至在必要时使用DirectX或其他任何东西)。
此外,在每次迭代时刷新缓冲区都会产生相关的开销(endl
相当于\n
+ flush
,这意味着您在WriteFile
执行{{1}}系统调用每次迭代 - 因此进入内核模式),但在控制台上写入时通常是次要的(无论如何输出都是行缓冲的。)