if und log. Verknüpfungen

How

Grünschnabel
Was ist effektiver(schneller):

a)
Code:
if (kWort == "Milch")
{
 ...
}
if (kWort == "Butter")
{
 ...
}
if (kWort == "Schokolade")
{
 ...
}
oder:
b)
Code:
if (kWort == "Milch" || kWort == "Butter" || kWort == "Schokolade")
{
...
}
Danke!

P.S.: Ich habe bestimmt unter 2000 if-Abfragen fast 100 kWort'e, die so zusammengefaßt werden müßten. Gibt es bei b) dann Performance-Probleme, wenn die Zeile dann aus 100 kWort-Oder-Verknüpfungen besteht?
 
Variante b) ist definitiv günstiger. Die Auswertung einer solchen if-Anweisung wird sofort beendet, wenn der erste ausgewertete Ausdruck wahr ist (in einer ODER-Verknüpfung reicht ein einziger wahrer Teilausdruck, um den gesamten Ausdruck wahr werden zu lassen). Bei den getrennten if's muß JEDE überprüft werden.
 
Kommt auf den Verwendungszweck an. Wenn Du in jedem Fall etwas anderes machen willst, ist die erste Variante günstiger, allerdings würde ich das dann mit if-elseif-Verzweigung machen.

Wenn bei allen das gleiche ausgeführt werden soll, ist die zweite Variante wirklich besser - aus zwei Gründen:
1. Es wird nur eine einzige Anweisung ausgeführt, um die Überprüfung durchzuführen.
2. Du schreibst den Code nur einmal und erzeugst damit keine Redundanzen.

Allerdings weiss ich nicht, ob bei C++ eine obere Grenze hat, was logische Verknüpfungen angeht.
 
Zurück