Also zur Performance: Die if/else Variante ist im Prinzip die langsamste, da in der Regel jedes if ein jmp produziert, wobei die Befehlspipeline moderner Prozessoren jedesmal neu aufgebaut werden muessen (Sprungvorhersage mal ausser acht gelassen.
Gerade die Sprungvorhersage ist aber ein entscheidender Faktor. Außerdem geht der Trend atm wieder etwas weg von den extrem tiefen Pipelines wie z.b. der P4 sie hatte. Ein falsch vorhergesagter Sprung ist damit auch nichtmehr so schlimm.
Z.B. kann parallel A1, A2 und B ausgewertet werden ( sind nicht datenabhaengig ).
Das geht leider nicht so einfach, weil C++ garantiert, dass abhängig vom Ergebnis von B nur entweder A1 oder A2 ausgewertet wird. Eine parallele Auswertung wäre also höchstens nur dann möglich wenn sichergestellt ist, dass A1 und A2 frei von Seiteneffekten sind.
(muss nicht zwingend ein jmp sein, vielleicht gibts dafuer ja auch einen extra Assemblerbefehl).
Ja, sowas gibt's