Ho uno script di shell che sto eseguendo sia su Linux che su Sun Solaris, tuttavia c'è una notevole differenza nel tempo impiegato dallo script per eseguire.
Quando eseguo il debug dello script su entrambi i server usando 'set -x' ho scoperto che un ciclo for che prende il suo output da un'istruzione 'awk' richiede molto più tempo su Linux che su Solaris. dopo aver impostato l'opzione di debug posso osservare l'esecuzione riga per riga degli script e osservo che le prestazioni sono molto più lente su Linux anche se lo stesso set di linee viene eseguito su entrambi i server.
Di seguito è la parte dello script che richiede tempo:
for k in `awk ' {print $1 }' StartAppTemp`
Inoltre ho calcolato il tempo impiegato dal ciclo for usando il comando seguente:
time `for k in `awk ' {print $1 }' StartAppTemp``
O / P su Linux:
real 0m0.002s
user 0m0.000s
sys 0m0.003s
O / p su Solaris
real 0m0.00s
user 0m0.00s
sys 0m0.00s
Qui la precisione è solo di 2 cifre dopo i decimali.
Script completo:
for k in `awk ' {print $1 }' StartAppTemp`;do
ps -p $k >/dev/null;
if test $? -eq 0 ; then
echo "running";
else
echo "Stopped";
fi;
done;
C'è un modo per migliorare le prestazioni su Linux?
real 0m0.002s
arrotondamenti a real 0m0.00s
- quelli sono effettivamente gli stessi valori. Si afferma anche "dopo aver impostato l'opzione di debug posso osservare l'esecuzione riga per riga degli script e osservo che le prestazioni sono molto più lente su Linux". Non penso sia probabile che tu possa effettivamente osservare una differenza di alcuni millesimi di secondo - il che significa che la tua differenza di prestazione non è nell'affermazione awk.