Dire che ho il seguente codice:Esiste un costo delle prestazioni per l'autoboxing di un primitivo letterale?
Map<String, Boolean> map = ...
map.put("foo", true);
Teoricamente, true
dovranno essere autoboxed, con un conseguente lieve calo di prestazioni rispetto inserimento Boolean.TRUE
. Ma dal momento che abbiamo a che fare con un valore letterale, è possibile che il compilatore sostituisca il letterale primitivo con un valore letterale in scatola, quindi non ci sono sovraccarichi di runtime aggiuntivi?
Prima che qualcuno mi attacchi, in genere opterei per il primitivo letterale per motivi di chiarezza del codice, anche se c'era un piccolo costo di prestazioni. Questa domanda è per lo più teorica.
la chiave per comprendere qualsiasi domanda relativa alle prestazioni inizierà sempre con un test. Per migliorare la tua domanda, mostra un test temporale che fornisce i risultati di un'analisi delle prestazioni. Ad esempio, è possibile scrivere un ciclo temporizzato che mette le voci 100K in una mappa e stampa quanto tempo ha impiegato, e fa lo stesso per diversi argomenti a 'map.put' – activedecay
Si potrebbe usare una costante' Boolean'; 'map.put (" foo ", Boolean.TRUE);' –
@ElliottFrisch Lo so. La mia domanda è se sarebbe di aiuto a tutti. – shmosel