CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[JavaScript] Switch ou If ?

Metalorn
Metalorn
Niveau 10
01 décembre 2015 à 14:29:57

Salut à tous :)

Je voudrais savoir ce qui est le plus optimisé entre plusieurs if et des switch.

Quand il y a beaucoup de données à gérer, ou qu'on sait qu'il va y en avoir beaucoup par la suite, dans un contexte de fluidité ou même de norme, que choisir ?

Voici un exemple :

function lancementAttaque(attaque, direction)
	{
		switch(attaque)
		{
			case 'Fireball':
			imageAttaque.src = 'style/images/Boule de feu.gif';
			degatsActifs = 15;
			break;
			
			case 'Shuriken':
			imageAttaque.src = 'style/images/Shuriken.gif';
			degatsActifs = 8;
			break;
		}
		switch(direction)
		{
			case 'droite':
			directionActive = 10;
			imageAttaque.style.top = '110px';
			imageAttaque.style.left = '15px';
			
			santeActiveSasuke = santeActiveSasuke - degatsActifs;
			santeSasuke.innerHTML=santeActiveSasuke;
			break;
			
			case 'gauche':
			directionActive = (-10);
			imageAttaque.style.top = '110px';
			imageAttaque.style.left = '290px';
			
			santeActiveNaruto = santeActiveNaruto - degatsActifs;
			santeNaruto.innerHTML=santeActiveNaruto;
			break;
		}
		
		debutAttaque();
	}

Merci :)

Message édité le 01 décembre 2015 à 14:31:23 par Metalorn
yes-man
yes-man
Niveau 13
01 décembre 2015 à 14:49:39

C'est bien souvent anecdotique comme performance niveau fluidité etc.. (le switch étant un peu plus rapide).

Si tu as peu de choix, tu peux rester avec un if, si tu en as beaucoup, tu peux passer sur un switch.

Des membres plus adeptes à répondre confirmeront (ou pas) mon message :oui:

Metalorn
Metalorn
Niveau 10
01 décembre 2015 à 15:01:28

J'étais parti aussi sur cette idée là. Mais j'ai lu quelques trucs sur Google comme quoi le switch risquait d'être plus lent, du coup je cherche d'autres avis ici.

Merci :)

Caletlog
Caletlog
Niveau 10
01 décembre 2015 à 17:29:00

L'idée même d'une différence de performance notifiable entre deux structures de contrôle similaires du même langage est absurde ; tu travaille dans un langage de très haut niveau avec des tonnes d'abstractions, dont l'implémentation dispose de compilateurs bytecode ultra efficaces qui font déjà des optimisations monstrueuses lors de la compilation par de l'analyse statique, et de nouvelles optimisations de dernière minute lors de l'exécution. La différence qu'il peut y avoir entre ces deux structures de contrôle est, si elle existe, complètement insignifiante et/ou indétectable, même à une échelle massive.

Quand bien même la différence serait mesurable, on parle de code en Javascript. Si ton projet a un besoin crucial de performance (indice : ça sera très rarement le cas), il y a une infinité d'optimisations bien réelles que tu peux faire de ton côté, sur la logique de ton code et ses structures de données, avant de chercher la petite bête sur un mot-clé de langage. L'une d'entre elle pourrait être de choisir un langage plus adapté à ta situation d'ailleurs, parce que si tu cherche à gagner des nanosecondes sur une structure de contrôle du langage, utiliser un langage interprété avec ramasse miette est sans doute pas la meilleure idée.

La seule question que tu devrais te poser c'est si ça rend ton code plus lisible. En l'occurrence, il est généralement admis que dès lors qu'on a plus de deux branchements ou qu'on fait les branchements sur un marqueur, un switch est beaucoup plus lisible qu'une série, même courte, de if.

Metalorn
Metalorn
Niveau 10
02 décembre 2015 à 11:16:25

Merci pour cette réponse très précise :)

deepblue
deepblue
Niveau 16
02 décembre 2015 à 12:57:12

Sans répondre directement à la question (les vdd ont bien résumé les faits), c'est en terme de conception que tu peux travailler. Si tu as 100 attaques différentes, images la tronche de ton code.
Je reposterai pour donner un exemple.

deepblue
deepblue
Niveau 16
02 décembre 2015 à 13:40:31

https://jsfiddle.net/9p29ff51/1/

Bon, je ne suis pas un développeur js et c'est pas bien pensé, mais j'espère que ça pourra te donner des pistes.

Message édité le 02 décembre 2015 à 13:41:13 par deepblue
Metalorn
Metalorn
Niveau 10
07 décembre 2015 à 09:50:12

Merci beaucoup, je vais checker ça :)

_Rain
_Rain
Niveau 9
09 décembre 2015 à 18:13:23

Caletlog a tout dit, la question n'a pas lieu d'être, c'est simplement pour améliorer la lisibilité de ton code.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment