Einerseits: Was soll die Aufregung um einen nutzlosen zusätzlichen Befehl der auf der Shell eingegeben wird?
Andererseits: Glaube nur dem was Du selber gemessen hast!
Also wie messen wir, um wie viel langsamer ein nutzloses cat-Command ist?
Dazu ein kleiner Setup, mit ein paar Testdaten – File a:
a a a a b b b b b a b ab ba
Und ein Script test1.sh, mit dem useless cat:
#/bin/bash cat a | grep b
Und ein Script, test2.sh, ohne useless cat:
#!/bin/bash grep b a
Beide Scripts je 2 Mal ausgeführt:
# time ./test1.sh > /dev/null real 0m0.227s user 0m0.012s sys 0m0.024s # time ./test2.sh > /dev/null real 0m0.045s user 0m0.012s sys 0m0.004s # time ./test1.sh > /dev/null real 0m0.026s user 0m0.012s sys 0m0.008s # time ./test2.sh > /dev/null real 0m0.013s user 0m0.000s sys 0m0.004s
Die Umleitung nach /dev/null ist dazu da, dass der Output keine Auswirkung auf die Geschwindigkeit hat. Beim ersten Aufruf, merkt man, dass hier erst das Script und die Testdaten erst in den Cache geladen werden.
test2.sh läuft beim 2. Aufruf also doppelt so schnell!
Was machen die 0,013 Sekunden Unterschied schon aus? Das sehen wir, sobald das ganze in eine Schleife verpacken:
# time for i in {0..100..1}; do ./test1.sh; done > /dev/null real 0m7.765s user 0m0.936s sys 0m2.000s # time for i in {0..100..1}; do ./test2.sh; done > /dev/null real 0m3.827s user 0m0.496s sys 0m0.896s
Das Fazit also: Finger weg vom nutzlosen cat-Command!
Schreibe einen Kommentar