sagen, dass ich den folgenden Code haben:Gibt es eine Leistung Kosten Autobox ein primitives Literal?
Map<String, Boolean> map = ...
map.put("foo", true);
Theoretisch true
wird in einer leichten Performance im Vergleich Einfügen Boolean.TRUE
treffen müssen autoboxed werden, zur Folge hat. Aber da es sich um einen Literalwert handelt, ist es möglich, dass der Compiler das primitive Literal durch ein Boxed-Literal ersetzt, so dass es keinen zusätzlichen Laufzeitaufwand gibt.
Bevor irgendjemand mich angreift, würde ich mich im Allgemeinen für das einfache Literal entscheiden, um die Klarheit des Codes zu gewährleisten, selbst wenn es kleine Performance-Kosten gibt. Diese Frage ist meist theoretisch.
Der Schlüssel zum Verstehen einer performancebezogenen Frage beginnt immer mit einem Test. Zeigen Sie zur Verbesserung Ihrer Frage einen Zeittest, der Ergebnisse einer Leistungsanalyse enthält. Zum Beispiel könnten Sie eine zeitgesteuerte for-Schleife schreiben, die 100K Einträge in eine Map einfügt und die Länge der Map ausdruckt, und dasselbe für verschiedene Argumente zu 'map.put' tun. – activedecay
Sie können eine 'Boole'-Konstante verwenden; 'map.put (" foo ", Boolean.TRUE);' –
@ElliottFrisch Ich weiß. Meine Frage ist, ob es überhaupt helfen würde. – shmosel