Optimisation en JavaScript : Fonctions Math.floor et Math.min
par
, 29/10/2014 à 03h22 (1375 Affichages)
Pour tronquer un nombre flottant et le convertir ainsi en nombre entier non signé, il est assez courant de voir l'opérateur >> (décalage binaire vers la droite) au lieu de la fonction standard Math.floor.
Est-ce justifié en terme de performance ?
Comme on peut le voir ci-dessus, la comparaison sur jsperf de ces deux méthodes indique que la fonction standard Math.floor est tout aussi efficace, voire plus que l'opérateur >>. La fonction Math.floor a aussi deux autres vertus. Elle est plus explicite que >> 0 et elle préserve le nombre de bits du nombre, ce que ne fait pas le décalage binaire vers la droite puisque qu'il converti le nombre à 32 bits malgré le fait que JavaScript gère des nombres de 64 bits.
Il y a une autre construction syntaxique assez fréquente, qui est celle de l'opérateur ternaire ? : pour comparer deux valeurs entre elles. Mais est-ce cet opérateur ternaire est plus rapide que la fonction Math.min ?
Le site jsperf indique que contrairement à l'intuition, la fonction Math.min est tout aussi rapide que l'opérateur ternaire, en tout ca sur un navigateur comme Firefox 33.
Les résultats de performances obtenus pour les fonctions standards Math.floor et Math.min nous montre que les fonctions mathématiques en JavaScript sont plutôt optimisées et qu'il est donc préférable de les utiliser, d'autant plus qu'elles sont plus lisibles et explicites que d'autres constructions syntaxiques et qu'elles préservent le nombre de bits.