La variable code ne peut a priori pas être à la fois égale à 1, 6, 'c', etc... en même temps (Sauf si elle change dans les "..."). Donc des else if serait plus adapté. Mais le code ne serait environs que deux fois plus rapide (Complexité passant de n à n/2). Si code == 'c', on comparerait code avec 1, 6 et 'c', mais plus les suivant. Une optimisation est donc de mettre les cas courants dans les premiers else if. Comme ça on match plus vite.
Mais si les valeurs de code sont dans une plage relativement petite (Un entier de 0 à 400 par exemple), en C on peut faire un tableau de fonction, et là normalement ça dépote pas mal vu que l'on ne fait plus n tests mais que l'on a un accès direct (Par contre l'appel de fonction aura un coût).
1 2 3 4 5 6 7 8
| #include <stdio.h>
typedef void (*treatment)();
void treatmentA()
{
...
} |
Partager