79 votes

Performance du conditionnement basé sur if-else, switch ou map

Je m'interrogeais sur les performances des implémentations suivantes de structures conditionnelles en javascript.

Méthode 1 :

  if(id==="camelCase"){
    window.location.href = "http://www.thecamelcase.com";
}else if (id==="jsFiddle"){
    window.location.href = "http://jsfiddle.net/";
}else if (id==="cricInfo"){
    window.location.href = "http://cricinfo.com/";
}else if (id==="apple"){
    window.location.href = "http://apple.com/";
}else if (id==="yahoo"){
    window.location.href = "http://yahoo.com/";
}           

Méthode 2 :

 switch (id) {
case 'camelCase':
    window.location.href = "http://www.thecamelcase.com";
    break;
case 'jsFiddle':
    window.location.href = "http://www.jsfiddle.net";
    break;
case 'cricInfo':
    window.location.href = "http://www.cricinfo.com";
    break;
case 'apple':
    window.location.href = "http://www.apple.com";
    break;
case 'yahoo':
    window.location.href = "http://www.yahoo.com";
    break;

}

Méthode 3

 var hrefMap = {
camelCase : "http://www.thecamelcase.com",
jsFiddle: "http://www.jsfiddle.net",
cricInfo: "http://www.cricinfo.com",
apple: "http://www.apple.com",
yahoo: "http://www.yahoo.com"
};
window.location.href = hrefMap[id];

Méthode 4

 window.location.href = {
    camelCase : "http://www.thecamelcase.com",
    jsFiddle: "http://www.jsfiddle.net",
    cricInfo: "http://www.cricinfo.com",
    apple: "http://www.apple.com",
    yahoo: "http://www.yahoo.com"
}[id];

Probablement, les méthodes 3 et 4 pourraient avoir presque les mêmes performances mais simplement poster pour confirmer.

18voto

jAndy Points 93076

Vous pouvez toujours faire un test jsPerf vous-même. Cependant, en général, une table de recherche est le moyen le plus rapide d'accéder aux données. Ce serait (3) dans vos extraits. De plus, switch/case est presque toujours plus rapide que if-else . Donc l'ordre pour votre exemple serait

(3) -> (4) -> (2) -> (1)

-1voto

Ubermonk Points 103

J'ai juste pensé que j'ajouterais cela comme une considération possible. Je suis tombé sur cela en faisant des recherches sur cette question même ... http://davidbcalhoun.com/2010/is-hash-faster-than-switch-in-javascript

Il prend en compte différents moteurs et navigateurs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X