Refactoring : if, else if ou switch

Avis aux pros du C. 
En algo, quel est le plus rapide ?
Du peu que je sais, je crois que switch a été fait pour être rapide sur des multi-choix.
Exemple, avec ce genre de code :
Après, il me semble que if...else est plus lent qu'une série de if (encore que c'est peut-être l'idéal si on pense que 90% des appels ne passeront que dans le premier if non ?)
Switch semble être l'idéal mais n'est pas toujours adapté à des gros blocs de code à l'intérieur (même si on peut appeler d'autres méthodes).

En algo, quel est le plus rapide ?
Du peu que je sais, je crois que switch a été fait pour être rapide sur des multi-choix.
Exemple, avec ce genre de code :
if (self._type == kRACK_UMODULES) title = _T(kUmodules);<br /> if (self._type == kRACK_VMODULES) title = _T(kVmodules);<br /> if (self._type == kRACK_XBOTTLES) title = _T(kXbottles);<br /> if (self._type == kRACK_YBOTTLES) title = _T(kYbottles);
Après, il me semble que if...else est plus lent qu'une série de if (encore que c'est peut-être l'idéal si on pense que 90% des appels ne passeront que dans le premier if non ?)
Switch semble être l'idéal mais n'est pas toujours adapté à des gros blocs de code à l'intérieur (même si on peut appeler d'autres méthodes).
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
l'optimisation de bouts de chandelle, ca sert a rien......
Mais pas pour des questions de vitesse: parce que le code indique clairement que le choix n'est pas multiple. La lisibilité serait peut-être meilleure, quoi que.
Dans le concept, utiliser les else if serait plus rapide puisque les cas suivants ne sont pas évalués. Cependant, on ne peut l'affirmer, car les conditions créent des ruptures de séquences qui rendent le fonctionnement non-linéaire, et rendent donc plus délicat le dispatch des instructions sur les pipelines du microprocesseur.
Il faudrait mesurer, et pour ce bout de code qui doit être appelé très peu fréquemment, ça ne vaut pas le coup.
Si je devais changer quelque chose à ton code, ce serait plutôt les noms des constantes, qui me paraissent moyennement parlants.
Switch n'est-il vraiment pas plus rapide sur une série de 100 if par exemple ?
En règle générale, il faut écrire lisiblement. Les compilateurs ont été écrits par des êtres humains; ils marchent mieux quand le code est écrit de façon naturelle pour un humain.
http://pommedev.mediabox.fr/optimisation-refactoring-trucs-et-astuces/tableau-c-de-strings-global/msg69354/#msg69354