Les gars, j'ai quelques questions :
- Y a-t-il une différence de performance en JavaScript entre un
switch
et uneif...else
? - Si oui, pourquoi ?
- Est-ce que le comportement de
switch
yif...else
différent selon les navigateurs ? (FireFox, IE, Chrome, Opera, Safari)
La raison pour laquelle je pose cette question est qu'il me semble que j'obtiens de meilleures performances sur une switch
avec environ 1000 cas dans Firefox.
Modifié Malheureusement, ce n'est pas mon code, le Javascript est produit par le serveur à partir d'une bibliothèque compilée et je n'ai pas accès au code. La méthode qui produit le javascript s'appelle
CreateConditionals(string name, string arrayofvalues, string arrayofActions)
note arrayofvalues
est une liste séparée par des virgules.
ce qu'il produit est
function [name] (value) {
if (value == [value from array index x]) {
[action from array index x]
}
}
Note : où [name]
= le nom passé dans la fonction côté serveur
Maintenant, j'ai modifié la sortie de la fonction pour qu'elle soit insérée dans un TextArea, j'ai écrit du code JavaScript pour analyser la fonction et je l'ai convertie en un ensemble d'éléments d'information. case
déclarations.
Enfin, j'exécute la fonction et elle fonctionne bien mais les performances diffèrent dans IE et Firefox.
1 votes
Je suggère un échantillon de code pour examiner ce qui est optimal. Je veux dire, il doit y avoir une raison pour laquelle vous demandez ça, non ?
1 votes
Veuillez poster ce que vous faites, parce qu'il y a très peu de cas dans ma longue expérience pour lesquels je dirais qu'une instruction switch de 100 cas ou une série de 100 if/else est une bonne idée.
0 votes
Désolé les gars, pas des centaines mais des milliers de conditions
3 votes
Merci à tous pour votre contribution. Mais mon problème n'était pas vraiment la différence entre les statuts if et swith. C'était le code exécuté à l'intérieur de la déclaration. +1 à vous tous pour votre aide. Désolé pour le désagrément. Parfois, il faut juste discuter avec une autre personne pour trouver la solution.