Wie Switch-case-Anweisung Umgesetzt werden oder intern arbeitet?

Ich habe irgendwo gelesen, dass die switch - Anweisung verwendet "Binary Search" oder einige Sortieren von Techniken, um genau wählen Sie die richtige Fall-und dies steigert seine Leistung im Vergleich zu else-if-Leiter.

Und auch wenn wir den Fall in die Reihenfolge der Schalter schneller arbeiten? ist es so? Können Sie fügen Sie Ihre wertvolle Anregungen zu diesem?

Diskutierten wir hier über die gleichen, und geplant, um den Beitrag als eine Frage.

Hängt vom compiler und der eigentlichen Umstellung Fälle. Einige gängige Implementierungen zeigen sich in der Secrets of Reverse Engineering.
Duplikat von: stackoverflow.com/questions/2596320/...
Meine persönliche Erfahrung mit dem GCC ist begrenzt, und ich kann nur darauf hinweisen, ein Interessantes Beispiel. Edit: natürlich, wenn Sie neugierig sind, sollten Sie kompilieren mehrere verschiedene switch () - Anweisungen und zerlegen Sie die Ergebnisse.
codeproject.com/Articles/100473/...
Das ist ein schöner Artikel, aber nochmals: der compiler ist frei, implementieren Sie einen Schalter, aber es will - wie eine Reihe von if/else, als eine ein-level-oder multi-level-Sprung-Tabelle als eine binäre Suche Muster... die Tatsache, dass MSVC setzt diese in einer bestimmten Art und Weise garantiert nicht, dass der GCC, clang oder ICC wird das gleiche tun.

InformationsquelleAutor 2vision2 | 2012-12-28

Schreibe einen Kommentar