为什么直接打印到 console/terminal 比重定向慢?
Why is it slower to print directly to console/terminal than redirecting?
为什么将多行打印到终端而不是将其重定向到看起来几乎是即时的文件要花费更多时间?
首先,终端非常慢。对于每次更新,他们必须:
- 解析和解释任何控制代码。
- 解析、解释和呈现任何转义码。
- 解释和说明任何多字节和组合字符。
- 更新适当的屏幕和滚动缓冲区。
- 使用适当的字体呈现。
如果您使用 screen 或 tmux,则可能会再次执行上述所有操作。
同时,要重定向到文件,您只需:
将数据转储到 RAM(以便稍后写回存储)。
这一步太小了,甚至没有在终端的清单上注册。
这不是人们优化的目标,因为终端的速度很少成为问题。终端之间的差异可能是 50 倍(VGA vs fbcon 回到当天),你可以用一个简单的 time cat somebigfile.txt
.
来计时
为什么将多行打印到终端而不是将其重定向到看起来几乎是即时的文件要花费更多时间?
首先,终端非常慢。对于每次更新,他们必须:
- 解析和解释任何控制代码。
- 解析、解释和呈现任何转义码。
- 解释和说明任何多字节和组合字符。
- 更新适当的屏幕和滚动缓冲区。
- 使用适当的字体呈现。
如果您使用 screen 或 tmux,则可能会再次执行上述所有操作。
同时,要重定向到文件,您只需:
将数据转储到 RAM(以便稍后写回存储)。
这一步太小了,甚至没有在终端的清单上注册。
这不是人们优化的目标,因为终端的速度很少成为问题。终端之间的差异可能是 50 倍(VGA vs fbcon 回到当天),你可以用一个简单的 time cat somebigfile.txt
.