Quelle est la meilleure pratique pour utiliser un switch
par rapport à l'utilisation d'un if
déclaration pour 30 unsigned
où environ 10 ont une action attendue (qui est actuellement la même action). Les performances et l'espace doivent être pris en compte mais ne sont pas critiques. J'ai abstrait le snippet donc ne me détestez pas pour les conventions de nommage.
switch
déclaration :
// numError is an error enumeration type, with 0 being the non-error case
// fire_special_event() is a stub method for the shared processing
switch (numError)
{
case ERROR_01 : // intentional fall-through
case ERROR_07 : // intentional fall-through
case ERROR_0A : // intentional fall-through
case ERROR_10 : // intentional fall-through
case ERROR_15 : // intentional fall-through
case ERROR_16 : // intentional fall-through
case ERROR_20 :
{
fire_special_event();
}
break;
default:
{
// error codes that require no additional action
}
break;
}
if
déclaration :
if ((ERROR_01 == numError) ||
(ERROR_07 == numError) ||
(ERROR_0A == numError) ||
(ERROR_10 == numError) ||
(ERROR_15 == numError) ||
(ERROR_16 == numError) ||
(ERROR_20 == numError))
{
fire_special_event();
}
0 votes
Bien sûr, on peut le voir du point de vue de celui qui génère le code le plus efficace, mais tout compilateur moderne devrait être aussi efficace. En fin de compte, il s'agit plutôt d'une question de couleur de l'abri à vélo.
10 votes
Je ne suis pas d'accord, je ne pense pas que ce soit subjectif. Une simple différence ASM compte, vous ne pouvez pas simplement ignorer quelques secondes d'optimisation dans de nombreux cas. Et dans cette question, il ne s'agit pas d'une guerre ou d'un débat religieux, il y a une explication rationnelle de la raison pour laquelle l'un serait plus rapide, il suffit de lire la réponse acceptée.
2 votes
Ce qui est plus rapide : stackoverflow.com/questions/6805026/est-switch-faster-than-if
0 votes
@RichardFranks offtopic : grats ! vous êtes le premier humain pris en charge la modération sur SO que j'ai jamais vu.