Bash: Parameter- bzw. Variablen-Expandierung, was benötigt mehr Leistung?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
ren22

Bash: Parameter- bzw. Variablen-Expandierung, was benötigt mehr Leistung?

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: 1964
Registriert: 10.12.2008 10:51:41

Re: Bash: Parameter- bzw. Variablen-Expandierung, was benötigt mehr Leistung?

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).

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Bash: Parameter- bzw. Variablen-Expandierung, was benötigt mehr Leistung?

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!

Antworten