管道文件内容到程序的有效方法

时间:2015-05-01 13:44:15

标签: bash piping

假设我们只有通过管道输入的命令cmd。给定文件名file.txt,将此管道输入命令的最有效方法是什么? (我认为cat file.txt | cmd效率不高。)

1 个答案:

答案 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