显式重定向的速度差异

时间:2016-04-26 05:06:36

标签: bash

之间有什么区别
sed -ne '10{p;q;}' file.txt

&安培;

sed -ne '10{p;q;}' <file.txt 


我知道sed在这里做了什么,而我所关注的是输入传递的方式。就是我拿了一个sed例子。

我相信(这可能是一个严重的误解两者类似于下面的案例:

 exec 4<&0; exec 0<file.txt;sed -ne '10{p;q;}'-;exec 0<&4

正在发生(4,我只是一个临时文件描述符)。

所以两者都应该同样快。 我错了

1 个答案:

答案 0 :(得分:2)

两者最终都会有一个文件描述符到sed处理的文件,不同之处在于谁有效地打开()文件,但其余部分是相同的。与无用的猫和管道形成对比。性能影响可能与grep(尤其是GNU grep)更相关,grep在开放fd和更简单的stdin流上做了非常聪明的事情。