Mi sembra che ci siano diversi modi per restituire un valore da una funzione di Bash.Valori di ritorno dalle funzioni quando l'efficienza conta
Approccio 1: Utilizzare una variabile "locale-globale", che è definito come local
nella chiamante:
func1() {
a=10
}
parent1() {
local a
func1
a=$(($a + 1))
}
Approccio 2: comando Uso sostituzione:
func2() {
echo 10
}
parent2() {
a=$(func2)
a=$(($a + 1))
}
Quanto ci si potrebbe aspettare dall'utilizzo dell'approccio 1 rispetto all'approccio 2?
E, so che non è buona pratica di programmazione utilizzare variabili globali come nell'approccio 1, ma a un certo punto potrebbe essere giustificato a causa di considerazioni sull'efficienza?
Prova i benchmark in esecuzione? – shauryachats
Sì, l'approccio 1 sembra essere circa 33 volte più veloce sul mio portatile Ubuntu :) –
Quando l'efficienza è importante, si smette di usare 'bash' (o qualsiasi sapore di' sh'). –