Angesichts eines heißen Stücks Code, der mit vielen Case-Optionen (und alle sind mit Unterbrechungen z. B. kann neu geordnet werden) Switch JVM herauszufinden, die häufigen Einträge, um sie vor anderen zu überprüfen?Java-Switch intelligent genug, um neu zu ordnen?
0
A
Antwort
2
Häufigkeit oder Wahrscheinlichkeit der Ausführung von Einzelfällen kommt nicht dazu. Der Compiler erzeugt entweder:
- a
tableswitch
Befehl mit einer Sprungtabelle zugeordnet ist, die direkt durch den Schaltwert indexiert ist, oder - ein
lookupswitch
Befehl mit einer Tabelle von Schlüssel/Ziel-Paaren, die (in der Regel) können binär gesucht.
Siehe die JVM Specification #3.10.
+2
Dies gilt für 'javac' Compiler. Aber da es in der Frage ein "jit" -Tag gibt, könnte OP auch daran interessiert sein, wie das funktioniert, wenn der JIT-Compiler startet. Der HotSpot-Compiler behandelt ähnlich wie "tablewitch" und "lookupswitch" und ** berücksichtigt dies ** Frequenzstatistiken **, die während der Profilerstellungsphase gesammelt wurden. – apangin
Verwandte Themen
- 1. Ist Webpack intelligent genug, um jQuery leichter zu machen?
- 2. Ist Python intelligent genug, um Funktionsaufrufe mit konstantem Ergebnis zu ersetzen?
- 3. ist g ++ intelligent genug, um rekursive Aufrufe von Template-Funktionen zu optimieren?
- 4. Einfache Möglichkeit, ELF-Dateiabschnitte neu zu ordnen
- 5. Wie Array in PHP neu zu ordnen?
- 6. Visual Studio, Anwendungseinstellungen ... neu ordnen
- 7. Array bei Klick neu ordnen
- 8. neu ordnen Tabelle mit Python
- 9. neu ordnen, ein JSON-Objekt
- 10. Reihenfolge der Funkensäulen neu ordnen
- 11. MYSQL: wie man „neu ordnen“, um eine Tabelle
- 12. Wie Zeilen in einer qplot (R) neu zu ordnen
- 13. Wie Proxy-Adresse und Mail über Powershell neu zu ordnen
- 14. Trim Dateiname, um kurz genug zu sein
- 15. Schreiben genug, um einen Verbindungsverlust zu erkennen?
- 16. Ist es genug, um XSS zu vermeiden?
- 17. Zeile neu ordnen angular js in Datentabelle
- 18. Gibt es eine Möglichkeit, Git Stashs neu zu ordnen?
- 19. Mehrere Datenrahmen Spalte neu zu ordnen for-Schleife
- 20. Der einfachste Weg, Methoden in Eclipse neu zu ordnen
- 21. Pandas, wie nach dem Datum neu zu ordnen
- 22. Volatile liest/schreibt und Befehl neu zu ordnen
- 23. Wie Array von Index-Wert neu zu ordnen
- 24. jqGrid Drag & Drop-Spalte neu ordnen
- 25. SendKeys ist die Reihenfolge neu ordnen
- 26. jQuery verwenden, um eine Liste von Elementen als meine CSS-Methode neu zu ordnen nicht 100%
- 27. Mit purrr :: map und forcats :: fct_reorder um Faktorstufen nach jeder Untergruppe neu zu ordnen
- 28. Was ist der beste Weg, um einen Hash in Ruby neu zu ordnen?
- 29. Wie kann ich Canvases in einer Vbox ziehen und ablegen, um sie neu zu ordnen?
- 30. Form Eingabe Validierung mit HTML genug, um sicher zu sein?
Es wird in der Regel eine Sprungtabelle generieren, so dass die Frage "prüfe sie vor anderen" nicht einmal auftritt. – EJP
Also nein, wenn wir einen Switch mit 100s von Fällen haben, implementieren wir besser eine Datenstruktur, die dies tut (und selbst dann ist es Leistungstests, wenn es die Zeit wert ist) ... – vach
** No **. Der * Compiler * erzeugt * die Datenstruktur. – EJP