Geschwindigkeit: switch vs. if



  • jghj schrieb:

    Also; der compiler baut eine Jumptabelle auf und stellt das im Source so dar, dass die CPU möglichst wenig zu arbeiten hat (Am besten sequenziell).

    Aus dem Grund ist es egal, in welcher Reihenfolge ich meine switch-cases definiere, da sie der compiler sowieso sortiert.

    klang für mich so, als ob meinte, dass die "cases" sortiert werden. wie die jump table sortiert wird ist rille.



  • CStoll schrieb:

    Inwieweit?
    (ein Vorteil von if-else gegenüber switch() sind die Einschränkungen, womit du vergleichen kannst (nur ganzzahlige Typen - und nur Compilezeit-Konstanten))

    ja nach der aussage hast du auch recht,
    aber ich zumindest bin nie in die lage gekommen, dass ich nicht ganzzahlige typen in einer solchen masse an kontrollverzweigungen eine switch-kontrollstruktur gebraucht hätte, mir fällt jetz auch spontan kein beispiel ein, oder zumindest kein sinnvolles oder praktisch angewandtes ein.

    ich meine auch solche sachen, dass man mehrere fälle die ein und denselben anweisungsblock benötigen, in meinen augen übersichtlicher lösbar sind (ich hätt nich flexibler sagen sollen sry).



  • Ich habe switch bisher nur in drei Fällen verwendet:

    Als Statemachine eines Konsolenmenüs (in meinem ersten echten Programm :D)
    Als Statemachine eines Parsers (geht auch schöner, aber ich konnte es damals nicht besser)
    Für Debug-/Log-Ausgaben von DirectX-Kontrollstrukturen mit denen diverse Einstellungen festgelegt werden.

    Meine Erfahrung mit Switch ist eigentlich eher negativ, also zumindest habe ich bisher noch keine Verwendung gesehen wo ich wirklich sage, dass es sauber gelöst ist.


Anmelden zum Antworten