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

标签 linux io terminal

为什么将多行打印到终端而不是将其重定向到似乎几乎是即时的文件要花费更多时间?

最佳答案

首先,终端非常慢。对于每次更新,他们必须:

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

如果您使用 screen 或 tmux,则可能会再次执行上述所有操作。

同时,要重定向到文件,您只需:

  1. 将数据转储到 RAM(供以后写回存储)。

    这一步非常小,甚至没有在终端的 list 上注册。

这不是人们优化的目标,因为终端的速度很少成为问题。终端之间的差异可能是 50 倍(VGA 与 fbcon 在过去),您可以使用简单的 time cat somebigfile.txt 对其进行计时。

关于linux - 为什么直接打印到控制台/终端比重定向慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30766450/

相关文章:

c - 调整代码以复制/粘贴 .zip 和 .tar.gzip 文件?

php exec/shell_exec/system/popen/proc_open 在 linux 上无限次运行调用脚本本身

java - 以 ANSI 格式读取和写入文本

c# - 如何在标签中创建图形对象

java - 扫描仪在使用 next() 或 nextFoo() 后跳过 nextLine()?

macos - 我如何知道(在脚本中)在 mac os x 中打开了多少个终端?

git - 如何在终端中退出 'git status' 列表?

linux - Bash:在文件中的特定位置插入一行

linux - Bash 输入重定向为命令提供标准输入而不是参数/文件名?

java - 写入/打印到终端底部