Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Ordre d'évaluation et performance en JavaScript

Le , par yahiko

0PARTAGES

JavaScript étant un langage interprété, l'ordre des opérations peut avoir un impact significatif sur les performances selon le navigateur.

Par exemple, les expressions a * b + c et c + a * b bien que mathématiquement équivalentes peuvent ne pas avoir le même coût computationnel. Et pour cause.

Selon que la multiplication soit en début d'expression ou bien en fin d'expression, cela peut influencer drastiquement les performances.

Sur Chrome nous n'observons pas de différences réellement significatives selon l'ordre de la multiplication par rapport à l'addition.

Cependant, sur Firefox, en plus de performances globales meilleures par rapport à Chrome, on peut constater que l'ordre d'évaluation des opérandes est très important. Du simple au double !

Dans le doute sur le navigateur qui exécutera le code, il vaut mieux donc privilégier la multiplication en début d'expression plutôt qu'en fin.

Ceci peut sans doute s'expliquer par l'ordre d'évaluation d'une expression qui doit probablement se faire de gauche à droite. Si la multiplication qui a une plus grande priorité sur l'addition se trouve en fin d'expression et donc à droite, cela doit probablement obliger l'interpréteur JavaScript de Firefox à empiler l'opérande gauche de l'addition avant de réaliser la multiplication puis de faire la somme proprement dite. Lorsque la multiplication se trouve en début d'expression et donc à gauche, cela permet à l'interpréteur de calculer la multiplication puis l'addition, sans passer par la pile. En tout cas sur Firefox.

Plus généralement, il est sans doute préférable d'écrire les expressions JavaScript dans l'ordre des priorités décroissantes. L'opérateur de plus forte priorité avant celui de plus faible priorité afin de limiter l'usage de la pile.

Chrome par contre normalise probablement l'ordre des opérations au préalable de l'évaluation arithmétique.

Une erreur dans cette actualité ? Signalez-le nous !