Ich hätte der Antwort von Satō Katsura instinktiv zugestimmt. es macht Sinn. Es ist jedoch leicht genug zu testen.
Ich habe getestet, wie man eine Million Zeilen auf den Bildschirm schreibt, an eine Datei anfügt und zu dieser umleitet /dev/null
. Ich habe diese nacheinander getestet und dann fünf Wiederholungen durchgeführt. Dies sind die Befehle, die ich verwendet habe.
$ time (for i in {1..1000000}; do echo foo; done)
$ time (for i in {1..1000000}; do echo foo; done > /tmp/file.log)
$ time (for i in {1..1000000}; do echo foo; done > /dev/null)
Ich habe dann die Gesamtzeiten unten eingetragen.
Wie Sie sehen, stimmten die Vermutungen von Satō Katsura. Gemäß der Antwort von Satō Katsura bezweifle ich auch, dass der limitierende Faktor die Ausgabe ist, so dass es unwahrscheinlich ist, dass die Wahl der Ausgabe einen wesentlichen Einfluss auf die Gesamtgeschwindigkeit des Skripts hat.
FWIW, meine ursprüngliche Antwort hatte einen anderen Code, bei dem die Datei angehängt und in der Schleife /dev/null
umgeleitet wurde .
$ rm /tmp/file.log; touch /tmp/file.log; time (for i in {1..1000000}; do echo foo >> /tmp/file.log; done)
$ time (for i in {1..1000000}; do echo foo > /dev/null; done)
Wie John Kugelman in den Kommentaren ausführt, bedeutet dies einen erheblichen Mehraufwand. Da die Frage steht, ist dies nicht wirklich der richtige Weg , um es zu testen, aber ich werde es hier lassen , wie es deutlich die Kosten für die Wiedereröffnung eine Datei wiederholt aus zeigt im Skript selbst.
In diesem Fall werden die Ergebnisse umgekehrt.