Si les instructions vs Case
Existe-il des différences de rendement entre l'utilisation de if-else et le cas des déclarations lors de la manipulation de plusieurs conditions?
Qui est préférée?
source d'informationauteur fealin
Vous devez vous connecter pour publier un commentaire.
L'utilisation de l'un qui est plus lisible dans le contexte donné.
Dans certains langages, comme le C,
switch
peut éventuellement être plus rapide car il est généralement mis en œuvre avec un sauter table. Les compilateurs modernes sont parfois assez intelligent pour utiliser l'un de plusieursif
s, bien que.Et de toute façon, il ne sera probablement pas d'importance, micro-optimisations sont (presque) jamais utile.
Lorsque vous avez plus d'un ifelse, je recommande commutateur/select. Puis de nouveau, il ne fonctionne pas toujours.
Supposons que vous avez quelque chose comme ça (pas recommandé, mais seulement à titre d'exemple)
À l'aide d'un commutateur/select est PAS la voie à suivre. Cependant, lors de l'interrogation de la valeur spécifique d'une variable comme ceci
Dans ces cas, je le recommande fortement car c'est plus lisible pour les autres personnes.
Certains langages de programmation restreindre quand vous pouvez utiliser
switch
/case
consolidés. Par exemple, dans de nombreux C-comme langues de lacase
valeurs doivent être des entiers constants connu au moment de la compilation.Caractéristiques de Performance peut diffèrent entre les deux techniques, mais vous êtes peu probable d'être en mesure de prévoir à l'avance ce qu'ils sont. Si la performance est vraiment critique pour ce code dans votre application, assurez-vous que vous profil les deux approches avant de décider, car les réponses pourraient vous surprendre.
Normalement, les différences de performances seront négligeables, et vous devez donc choisir la plus lisible, compréhensible et maintenable code, comme il se doit dans à peu près toutes les autres émissions de la situation.
case
ouswitch
déclarations sont seulement des cas particuliers de "si .. elseif..." structures que vous pouvez utiliser lorsque l'objet même est d'être comparé à une autre valeur simple, dans chaque branche, et c'est tout ce qui est fait. La bonne chose à propos de l'utilisation, est que la plupart des compilateurs peuvent mettre en œuvre, sauter tables de façon à ce que l'ensemble du 200 (ou plusieurs) de la branche de contrôles peuvent être mis en œuvre comme une simple indexation de la table d'opération, et un saut.Pour cette raison, vous souhaitez utiliser un
case
déclaration quand vousPlus le nombre de "elseif"s, le plus attrayant d'un
case
est de l'instruction.Cas énoncés sont généralement préféré pour des raisons de lisibilité et sont généralement plus rapide si il n'y a aucune différence de vitesse, mais cela ne s'applique pas à tous les possibles de l'environnement.
Vous pourrait probablement écrire un test qui montre ce qui est plus rapide pour votre environnement, mais être prudent avec la mise en cache et les optimisations du compilateur.
Je vais ajouter quelques éléments de réponse ici. Ce n'est pas une performance question, et si vous êtes vraiment préoccupé par la performance... écrire un test et voir qui est plus rapide.
Toutefois, cela devrait être une question à propos de ce qui est propre à l'utilisation, pas ce qui est mieux. Si vous avez plusieurs if/else alors ne vous une faveur et d'utiliser une instruction de cas. Si c'est un simple if/else ensuite utiliser un if/else. Vous vous remercierez plus tard.