[gull] Truc et astuces: bash connector
felix
felix at f-hauri.ch
Wed Feb 21 10:15:48 CET 2018
> 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 - <felix at f-hauri.ch> - http://www.f-hauri.ch
More information about the gull
mailing list