Hello Gontran,
Hello All,

Merci beaucoup Gontran pour cet exemple.
Je pense qu'il nous permet d'avoir une bonne base pour la discussion.
Mais jusqu'ici ton etude reflete juste le fait que c'est plus rapide de
faire un
echo dans un script bash que d'appeler depuis un script bash un script
ruby qui
fait l'echo, ce que je ne conteste pas !

Meme si je me resoud a utiliser bash, je poursuit le raisonnement :

Entre le test ruby et le test bash on note donc une difference de 2.14 - 0.02
secondes soit 2.12 secondes pour 500 appels de print, soit une difference de
0.00424 secondes par appel  (4,24 ms).

Pour terminer cette etude il serait donc interressant de savoir quelle est la
duree totale moyenne d'execution de Ncooker d'une part, et d'autre part
combien
d'appels moyen a print sont effectues lors d'une execution de Ncooker.
On pourra
ainsi avoir une idee du temps moyens supplementaire ajoute par
l'utilisation de
ruby conjointement a Bash.

Ceci peut se faire en ajoutant un conteur dans print_message qui sera
affiche a
la fin de l'execution par exemple (quelques lignes a rajouter dans
print_message), puis de lancer la suite de tests de regression elaboree par
Gontran, en testant biensur les fonctions qui font quelque choses (pas celles
qui font juste afficher des messages ;-)) comme build, wizard ou install.

Je suis pret a le faire la semaine prochaine (je ne suis pas la ce we) pour
continuer cette etude (que je trouve interessante).

Tu es d'accord Gontran ? Mon raisonnement te semble-il correct ?
Ceci dit je trouve ca bien qu'on se pose ses questions, c'est assez
interessant
!
++
CHicha



Quoting Gontran Baerts <[EMAIL PROTECTED]>:

Le Jeudi 1 Septembre 2005 15:01, Charles-Henri d'Adhémar a écrit :
Mais je refute les arguements de performances tant qu'il n'y aura pas eu de
tests a l'appui

J'ai fait un petit test en écrivant un script ruby print.rb :

« print ARGV[0],"\n"
»

Rien de bien compliqué : il affiche le premier argument passé au
script, suivi
d'un retour à la ligne.
J'appelle ensuite print.rb pour écrire 500 fois "Hello world" à l'aide d'un
script bash test.sh :

«
#!/bin/bash
for i in $( seq 1 500 ); do
   ruby print.rb "Hello world!"
done
»

je lance test.sh plusieurs fois en mesurant le temps d'exécution :

time -p ./test.sh
...
real 2.14
user 1.55
sys 0.52

Le temps d'exécution le plus court que j'ai obtenu est de 2,14 secondes.

Je fais un autre test en utilisant une commande externe à Bash codée en C,
« /bin/echo », fournie avec les coreutils. Le script bash ne change pas
beaucoup :

«
#!/bin/bash
for i in $( seq 1 500 ); do
   /bin/echo "Hello world!\n"
done
»

je lance test.sh plusieurs fois en mesurant le temps d'exécution :

time -p ./test.sh
...
real 0.34
user 0.11
sys 0.19

Le temps d'exécution le plus court que j'ai obtenu est de 0,34 secondes.

Utiliser une commande compilée à partir d'un code C au lieu d'un script Ruby
interprêté s'avère être plus de 6 fois plus rapide pour cette tâche.

Même test en utilisant la commande echo intégré au Bash (builtin) :

«
#!/bin/bash
for i in $( seq 1 500 ); do
   echo "Hello world!\n"
done
»

je lance test.sh plusieurs fois en mesurant le temps d'exécution :

time -p ./test.sh
...
real 0.02
user 0.00
sys 0.00

Le temps d'exécution le plus court que j'ai obtenu est de 0,02 secondes.
Utiliser la commande echo intégrée au bash se révèle être plus de 100 fois
plus rapide que le script Ruby, et 17 fois plus rapide que la commande
externe en C.

Voilà :-)

++
Gontran

_______________________________________________
Nasgaia-dev mailing list
[email protected]
https://mail.gna.org/listinfo/nasgaia-dev




Répondre à