Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
ren22
Beitrag
von ren22 » 04.05.2020 05:36:27
Hallo,
was benötigt mehr Leistung bei der
Bash Parameter- bzw. Variablen-Expandierung ?
Wenn man in einem
Bash Script jedesmal die
Parameter- bzw. Variablen-Expandierung ausführt
Code: Alles auswählen
#!/bin/bash
VARIABLE='test="123"'
...code...
foobar()
{
if ....
${VARIABLE%%=*}
fi ....
}
...code...
case "${VARIABLE%%=*}" in
test) ....
echo "${VARIABLE%%=*} nicht gefunden! Abbruch."
;;
*) ....
esac
...code...
oder einmal zu Beginn des Scriptes die
Parameter- bzw. Variablen-Expandierung ausführt und das Ergebnis in einer Variable speichert, sodass dann jedesmal nur auf die bereits Expandierte Variabel zugegriffen werden muss !?
Code: Alles auswählen
#!/bin/bash
VARIABLE='test="123"'
FOOBAR="${VARIABLE%%=*}"
...code...
foobar()
{
if ....
$FOOBAR
fi ....
}
...code...
case "$FOOBAR" in
test) ....
echo "$FOOBAR nicht gefunden! Abbruch."
;;
*) ....
esac
...code...
*INFO: Der Abgebildette Bashcode dient nur zur bessen Veranschaulichung*
Vielen Dank
-
tobo
- Beiträge: 2336
- Registriert: 10.12.2008 10:51:41
Beitrag
von tobo » 04.05.2020 07:49:18
Die zusätzliche Auswertung, im Unterschied zur Zuweisung, wird bestimmt keinen Unterschied machen!? Einen signifikanten sowieso nicht. Und da die Shells dieses interne Zeugs rasend schnell machen, wird das wohl auch bei einem 1:n-Verhältnis (falls sinnhaftig vorhanden) so sein. Abgesehen davon, dass ziemlich sicher nicht n-mal dieselbe Auswertung ausgeführt werden dürfte. Aber das ist nur eine Annahme - ohne Wissen oder Werte. Was aber definitiv als Argument gegen die Zuweisung steht ist die sinkende Lesbarkeit durch die zusätzliche(n) Variable(n).
-
Meillo
- Moderator
- Beiträge: 9225
- Registriert: 21.06.2005 14:55:06
- Wohnort: Balmora
-
Kontaktdaten:
Beitrag
von Meillo » 04.05.2020 10:59:41
Ich stimme tobo zu, dass das von der Zeitperformance kaum einen Unterschied machen wird. Wahrscheinlich wird ein grep-Aufruf mehr Zeit kosten als 100 oder 1000 Parameter Expansions.
Lesbarkeit ist wichtiger.
Falls es dich aber genau interessiert, dann packe die relevante Stelle in ein Script und rufe das in einer Schleife 100.000 Mal auf. Vor die Befehlszeile schreibst du `time', dann erhaeltst du Zahlen. Passe die Schleifenanzahl so an, dass die Laufzeiten in der Groessenordnung von wenigen Sekunden liegen. Mache mehrere Messungen, damit sich Caches & Co. nicht auswirken.
Use ed once in a while!