假设我们只有通过管道输入的命令cmd
。给定文件名file.txt
,将此管道输入命令的最有效方法是什么? (我认为cat file.txt | cmd
效率不高。)
答案 0 :(得分:3)
让我们用1 GB blob(dump.data
)做一点测试:
使用>
运算符要快于cat
:
$ time cat dump.data | cat >/dev/null
real 0m0.360s
user 0m0.000s
sys 0m0.608s
$ time cat <dump.data >/dev/null
real 0m0.158s
user 0m0.000s
sys 0m0.156s
理论上应该比<
快一点的唯一方法是,如果cmd
接受文件名作为其参数并读取文件本身(因为没有涉及IPC - 只有一个进程可以使用数据)。然而,它在这个测试中没有任何区别:
$ time cat dump.data >/dev/null
real 0m0.158s
user 0m0.000s
sys 0m0.156s