Zudem ist ein switch immer schneller als eine if-Abfrage..da per jumptable direkt an die Stelle gesprungen wird..
Nein, nicht immer. Bei einer Abfrage ist die if-Variante - da korrigiere ich mich - zum Teil schneller, auch nicht immer. Es kommt drauf an, wie man die Abfrage macht. Interessanterweise, das ist mir grade aufgefallen, ist eine Abfrage if(x < 10) langsamer als if(x < 1).
Hier aber zum Beispiel ist die if-Abfrage schneller:
new a;
a = 1;
new t = GetTickCount();
for(new i = 0; i < 10000000; i++)
{
if(a == 0) { }
else { }
}
printf("if: %dms", GetTickCount()-t);
t = GetTickCount();
for(new i = 0; i < 10000000; i++)
{
switch(a)
{
case 0: { }
default: { }
}
}
printf("switch: %dms", GetTickCount()-t);
Tatsächlich kommt es aber dann darauf an, wie viel Prozent Differenz er nimmt, ob es performanter ist oder nicht, daher würde ich sagen beide Varianten sind in Ordnung, wobei ich trotzdem die if-Variante bevorzuge, da sie schneller zu schreiben ist und der Performanceunterschied irrelevent gering ist.