Warum sind die Here-Strings in Bash langsamer, als die Eingabe an einen Befehl zu übergeben?
740
static
Ich habe die Ausführungszeit für die Eingabe von Unix-Here-Strings und Pipe-Daten mit bc
folgenden Werten verglichen :
Rohr
time for i in do echo "sqrt(5.09)" | bc -q > /dev/null done real 0m3.584s user 0m0.899s sys 0m2.404s
vs
Hier-Saiten
time for i in do bc -q <<< "sqrt(5.09)" > /dev/null done real 0m5.137s user 0m0.686s sys 0m2.262s
(diese Werte sind durchschnittlich: viele Male getestet)
Die real
Ausführungszeit bei Verwendung von Here-Strings ist also größer als bei Verwendung der Pipes, aber die Summe der user
+ sys
Zeiten ist bei Here-Strings immer noch geringer als ich ursprünglich erwartet hatte (Echo ... | wird in einem neuen Prozess ausgeführt. es liegt also ein Ausführungsaufwand vor. Warum so ein seltsames Verhalten von bash?
0 Antworten auf die Frage
Verwandte Probleme
-
1
Pausieren Sie alle Aufgaben außer x CPU-intensiven Aufgaben
-
10
Wie kann ich die Bash-Historie durchsuchen und einen Befehl erneut ausführen?
-
2
Kann die Ausgabe eines Befehls an zwei andere Befehle weitergeleitet werden?
-
8
Benennen Sie eine Gruppe von Dateien mit einem Befehl um
-
2
Warum aktualisiert sich mein Pfad nicht * jetzt *?
-
5
Wie entferne ich einen symbolischen Link zu einem Verzeichnis?
-
8
Rette mich vor dem Kauderwelsch
-
9
Wie kann ich jeder Zeile einer Textdatei eine Zeilennummer und einen Tabulator voranstellen?
-
1
Wann sollte ich Konfigurationen in .bashrc vs einfügen? .bash_profile?
-
1
Umleitung: Wie kam das zusätzliche Wort in die Datei?