为什么直接打印到控制台/终端比重定向慢?

3
为什么在终端打印多行文本需要花费更长时间,而将其重定向到文件却几乎是瞬间完成的?

这比我有资格解释的要复杂得多,但答案是“缓冲”。终端输出会随着生成而显示,而重定向到文件将在写入之前填充缓冲区,从而最小化写入次数。 - Tom Fenech
这只是其中的一部分:终端比磁盘 - Thomas Dickey
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Alex
1个回答

3

首先,终端速度十分缓慢。对于每个更新,它们需要执行以下操作:

  1. 解析和解释任何控制代码。
  2. 解析,解释和渲染任何转义代码。
  3. 解释并考虑任何多字节和组合字符。
  4. 更新适当的屏幕和滚动缓冲区。
  5. 用适当的字体呈现。

如果使用 screen 或 tmux,还可能需要再次执行以上所有操作。

与此同时,为了重定向到文件,您只需要:

  1. 将数据转储到内存中(以便稍后写回存储器)。

    这一步骤如此微不足道,以至于它甚至不在终端的清单中注册。

这不是人们优化的目标,因为终端速度很少成为问题。终端之间的差异可以达到 50 倍(例如 VGA vs fbcon),而您可以通过简单的 time cat somebigfile.txt 测试时间。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接