[gull] Truc et astuces: calculs entiers en bash
felix
felix at f-hauri.ch
Thu Aug 5 15:37:09 CEST 2021
Bonjour,
En bash, on peut faire un calcul entier suivant la syntaxe:
val=$(( 3 * 7 * 2 ))
comme:
declare -i val
val=' 3 * 7 * 2 '
dans les 2 cas, la variable 'val' contiendra '42'.
Par contre, il y a une différence de performance:
https://f-hauri.ch/vrac/bashInteger.sh.txt
Voici le temps qui a fallu pour assigner 491'022x '11 ** 12 / 3 % 470' à une
variable, compte tenus que cette variable soit définie comme chaine de
caractère ou comme nombre entier (declare -i).
String var = '...' : 618.378ms -> '11 ** 12 / 3 % 470'
Integer var = '...' : 832.276ms -> '80'
String var = $(( ... )) : 1123.090ms -> '80'
Integer var = $(( ... )): 1124.578ms -> '80'
Assigner
- une chaine à une variable chaine est rapide, bon.
- une chaine à une variable de type entier -> calcul bash rapide.
- un entier calculé à une variable chaine -> calcul bash moins rapide.
- un entier à une variable de type entier, un tout petit poil moins rapide
Donc, quand le calcul est fait avec $((...)), c'est presque 2x moins rapide
que si bash fait l'opération en assignant à une variable entière.
--
Félix Hauri - <felix at f-hauri.ch> - http://www.f-hauri.ch
More information about the gull
mailing list