A resposta é "sim". Inicialmente, isso é mais uma afirmação, uma vez que cat está meramente lendo o arquivo, enquanto os outros dois estão procurando por uma expressão. Seus scripts de time
são a ideia certa, mas nessas durações extremamente baixas, qualquer variação pequena gerará resultados errôneos. É muito melhor usar um arquivo maior ou repeti-lo várias vezes.
$ time for i in {1..1000}; do cat temp.txt; done
...
real 0m0.762s
user 0m0.060s
sys 0m0.147s
$ time for i in {1..1000}; do grep "$" temp.txt; done
...
real 0m3.128s
user 0m0.667s
sys 0m0.263s
$ time for i in {1..1000}; do awk "/$/" temp.txt; done
...
real 0m3.332s
user 0m0.720s
sys 0m0.337s
Além disso (não mostrado), executei os comandos acima várias vezes para confirmar que cada comando foi executado quase ao mesmo tempo e, portanto, era replicável.
Mais referências
De acordo com os comentários, aqui estão mais alguns comandos que testei. No meu sistema, grep "^"
e awk "1"
não tiveram aumento apreciável na eficiência, embora sed ""
tenha se aproximado de cat
.
$ time for i in {1..1000}; do grep "^" temp.txt; done
...
real 0m2.992s
user 0m0.527s
sys 0m0.303s
$ time for i in {1..1000}; do awk "1" temp.txt; done
...
real 0m3.185s
user 0m0.570s
sys 0m0.317s
$ time for i in {1..1000}; do sed "" temp.txt; done
...
real 0m0.983s
user 0m0.077s
sys 0m0.193s