Perché For loop in Linux mostra basse prestazioni rispetto a Solaris?


0

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?


1
Entrambe le macchine hanno le stesse specifiche hardware? Parlare di "considerevole" quando si tratta di millisecondi sembra strano o quello script viene eseguito ogni secondo su quei server?
Seth,

3
Non vedo alcuna differenza nelle prestazioni dai dati che hai pubblicato. real 0m0.002sarrotondamenti 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.
Andrew Henle,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.