Suite a http://linuxfr.org/comments/454720.html#454720(...) , j'ai fait quelques tests sous dash, et on peut se rendre compte que les perf de bash sont desastreuse ...
sous bash :
date;for i in $(seq 100000); do echo $i > /dev/null;done;date
sam aoû 7 10:33:01 CEST 2004
sam aoû 7 10:33:13 CEST 2004
sous dash
date;for i in $(seq 100000); do echo $i > /dev/null;done;date
sam aoû 7 10:33:21 CEST 2004
sam aoû 7 10:33:25 CEST 2004
Et en plus a la fin dash libere vraiement la memoire...
ps v
PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
2915 pts/0 Ss 0:11 8 625 14286 12200 1.1 -bash
3343 pts/1 S+ 0:04 0 77 1774 824 0.0 dash
3350 pts/0 R+ 0:00 0 62 2265 676 0.0 ps v
idem pour
date;i=0;while true; do if [ $i = 100000 ] ;then break; fi ;echo $i > /dev/null; i=$(($i+1));done;date
sous bash
sam aoû 7 10:38:36 CEST 2004
sam aoû 7 10:39:03 CEST 2004
et dash
sam aoû 7 10:39:14 CEST 2004
sam aoû 7 10:39:23 CEST 2004
bref je suis content d'avoir dash comme lien symbolique vers /bin/sh ...
# Time
Posté par Yusei (Mastodon) . Évalué à 7.
time ta_commande
ça t'affiche trois mesures:
real 0m0.202s
user 0m0.002s
sys 0m0.005s
Et tu as pas mal d'options.
[^] # Re: Time
Posté par KiKouN . Évalué à 2.
Donc, ce text devrait être refait avec time ou un équivalent.
Exemple: bash sur un système "au repos":
date;for i in $(seq 500000); do echo $i > /dev/null;done;date
sam aoû 7 15:56:54 CEST 2004
sam aoû 7 15:57:07 CEST 2004
Exemple: dash sur un système stressé et avec un nice:
nice -n 18 dash -c 'date;for i in $(seq 500000); do echo $i > /dev/null;done;date'
sam aoû 7 16:01:36 CEST 2004
sam aoû 7 16:02:08 CEST 2004
Avec time sur un système stressé: (les deux scripts contienent le script précédant sans les 'date' )
bash: time tmp/benbash.sh
real 0m23.938s
user 0m9.713s
sys 0m3.645s
dash: time tmp/bendash.sh
real 0m9.846s
user 0m3.986s
sys 0m3.019s
[^] # Re: Time
Posté par M . Évalué à 5.
il faut donc utiliser /usr/bin/time dans tes 2 tests pour regler le probleme.
PS : mon journal n'avait pas pour but de donner un bench precis, mais juste une tendance et je voulais surtout montrer que tout ce qui ont argumenter dans l'article que si bash consommais plein de memoire apres un $(seq ....) c'etait bien de la faute de bash et pas comme il a ete dis une feature du noyau ou de la libc....
[^] # Re: Time
Posté par M . Évalué à 2.
[^] # Re: Time
Posté par Ramso . Évalué à 3.
[^] # Re: Time
Posté par gnujsa . Évalué à 2.
# Euh...
Posté par Grégory SCHMITT . Évalué à 6.
(désolé, vraiment désolé...)
En revanche, c'eut été sympathique si tu nous avais indiqué quelles versions de bash et dash tu avais utilisé (en particulier bash: 2 ou 3?), ton protocole de test aurait été plus complet.
Nouvelle rubrique à la mode, bientôt sur linuxfr: le bench de shells en tout genre...
[^] # Re: Euh...
Posté par M . Évalué à 2.
ii bash 3.0-4 The GNU Bourne Again SHell
ii dash 0.5.1-2 The Debian Almquist Shell
mais sous bash 2.05 c'etait gere mieux...
Sinon le bench de shell c'est quand meme interessant : ca peut te permettre de booter plus vite en choisisant le bon...
[^] # Re: Euh...
Posté par gnujsa . Évalué à 8.
[...]
It can be usefully installed as /bin/sh (because it executes scripts somewhat faster than "bash")
[...]
c'est apparement une qualité connue de dash, mais il faut faire attention, car il existe pas mal de script qui, malgrés le « #!/bin/sh », sont en faite remplis de « bachisme » et devraient plutôt commencer par #!/bin/bash. Un moyen de s'enrendre compte et de les éditer avec vim avec la coloration syntaxique d'activée. Les bashismes dans des scripts #!/bin/sh sont notés comme des erreurs, et sont surlignés en rouge
Par exemple:
essayez ce script une fois avec #!/bin/sh comme shebang, puis aprés avec #!/bin/bash:
echo ${toto%azerty}
il faut l'enregistrer, et le réouvrir le avec vim à chaque fois
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.