Şimdiye kadar Yararsız cat
Ödül Kullanımı çok iyi biliniyor ve ayrıca Yararsız bir Kullanımdanecho
da bahsediliyor ( bu soru için geçerli değil). "Bash'te Yararsız Kullanım echo
Ödülü" olması gerekip gerekmediğini merak ediyorum : Borulama, son derece bilimsel olmayan bazı ölçümlere göre yorumlu metinlerden ve yorumlamalardan çok daha yavaş görünüyor:
Yorumlu metinler:
for reps in 1 2 3 do time for i in {1..1000} do cat <<'END' test string END done > /dev/null done real 0m1.786s user 0m0.212s sys 0m0.332s real 0m1.817s user 0m0.232s sys 0m0.332s real 0m1.846s user 0m0.256s sys 0m0.320s
Herestrings
for reps in 1 2 3 do time for i in {1..1000} do cat <<< 'test string' done > /dev/null done real 0m1.932s user 0m0.280s sys 0m0.288s real 0m1.956s user 0m0.248s sys 0m0.348s real 0m1.968s user 0m0.268s sys 0m0.324s
Yönlendirme
for reps in 1 2 3 do time for i in {1..1000} do echo 'test string' | cat done > /dev/null done real 0m3.562s user 0m0.416s sys 0m0.548s real 0m3.924s user 0m0.384s sys 0m0.604s real 0m3.343s user 0m0.400s sys 0m0.552s
Genel olarak, yorumlu metinler ve yorumlamalar aynı hızdadır (bu, birkaç testten sadece bir veri kümesidir), yönlendirme sürekli olarak% 50'den daha yavaştır. Bir şeyi yanlış mı anlıyorum, yoksa bu Bash'deki standart girdiyi okuyan komutlar için genel bir kural olarak kullanılabilir mi?
cat <<END
vs cat <<< "test string"
vs echo "test string" | cat
veya cat <<'END'
vs cat <<< 'test string'
vs echo 'test string' | cat
açılımları dizeleri üzerinde kabuk tarafından gerçekleştirilen aynı miktarda olması.
$(seq $reps)
?
seq
" ödülüne izin vereceğim ;-)