> On Thu, Feb 15, 2018 at 07:56:21AM +0100, Laurent Franceschetti wrote: > > Surtout quel est le problème que cette méthode résoud, et quelle est l’idée > > centrale de la méthode? > Eliminer les ``forks'' répétitifs qui peuvent être évités.
Autre exemple: Il y a un outil installé avec `apt install byobu`, qui se trouve dans /usr/bin, qui se nomme byobu-ulevel. Il fait pas mal de forks vers `bc`. Il s'agit d'un script bash, écrit façon cuillère à pot sur un jeu de lego. Bref un petit test (sur un raspberry-pi v3): $ export BYOBU_PYTHON="python" # pour éviter des tests inutiles $ export TIMEFORMAT='Times: [U: %U, S: %S] -> %P%% x %Rs' # %R est significatif $ time byobu-ulevel -c 612.1234 -m -273.15 -x 1555.5 -t vbars_8 ▃ Times: [U: 0.090, S: 0.020] -> 32.27% x 0.341s $ time byobu-ulevel -c 612.1234 -m -273.15 -x 1555.5 -u "· █" -w 80 ██████████████████████████████████████·········································· Times: [U: 0.210, S: 0.150] -> 12.34% x 2.915s Bon, de 0.3 secondes à 3 secondes pour aligner 80 caractères, il y a à optimiser!! Voici ma version un poil optimisé, toujours **sans connecteur** $ time ./byobu-ulevel_noconnector -c 612.1234 -m -273.15 -x 1555.5 -t vbars_8 ▄ Times: [U: 0.090, S: 0.050] -> 53.61% x 0.261s $ time ./byobu-ulevel_noconnector -c 612.1234 -m -273.15 -x 1555.5 -u "· █" -w 80 ██████████████████████████████████████·········································· Times: [U: 0.080, S: 0.030] -> 45.50% x 0.242s Ok, ça va nettement plus vite dans le 2ème cas, et un poil dans le 1er. Voici la même version optimisé, mais avec mon ``shell_connector'': $ time ./byobu-ulevel -c 612.1234 -m -273.15 -x 1555.5 -t vbars_8 ▄ Times: [U: 0.110, S: 0.010] -> 66.58% x 0.180s $ time ./byobu-ulevel -c 612.1234 -m -273.15 -x 1555.5 -u "· █" -w 80 ██████████████████████████████████████·········································· Times: [U: 0.100, S: 0.040] -> 68.40% x 0.205s Le ``shell connector'' est clairement efficace! Voici enfin une version totallement ré-écrite, avec le connector inclu en début du script: $ time ./byobu-ulevel-new.sh -c 612.1234 -m -273.15 -x 1555.5 -t vbars_8 ▃ Times: [U: 0.040, S: 0.010] -> 62.01% x 0.081s $ time ./byobu-ulevel-new.sh -c 612.1234 -m -273.15 -x 1555.5 -u "· █" -w 80 ██████████████████████████████████████·········································· Times: [U: 0.050, S: 0.000] -> 58.90% x 0.085s Petite récap: byobu-ulevel version originale 0.356s ./byobu-ulevel_noconnector version optimisée 0.243s ./byobu-ulevel optimisée + connecteur bc 0.177s ./byobu-ulevel-new.sh réécriture + connecteur bc 0.088s Mes différentes version sont disponibles à http://f-hauri.ch/vrac/byobu-ulevel_alternatives.tgz Comme quoi, si le bash tend à devenir un ``language de programmation'', il en est encore très loin! Par contre, pour le prototype, il le fait!! De là, si quelqu'un veut le ré-écrire pour le rendre plus efficace, alors je préfèrerai du ``C'' qui pourra en faire un truc léger voire instantané, plutôt que du python, perl, php ou autre ecmascript, qui vont nous faire grapiller quelques microsecondes. -- Félix Hauri - <fe...@f-hauri.ch> - http://www.f-hauri.ch _______________________________________________ gull mailing list gull@forum.linux-gull.ch http://forum.linux-gull.ch/mailman/listinfo/gull