Stavo usando newInstance()
in un'area del mio codice di importanza critica per le prestazioni. La firma del metodo è:Prestazioni di nuovo operatore rispetto a newInstance() in Java
<T extends SomethingElse> T create(Class<T> clasz)
mi passano Something.class
come argomento, ottengo un'istanza di SomethingElse
, creata con newInstance()
.
Oggi sono tornato per cancellare questa prestazione TODO dall'elenco, quindi ho eseguito un paio di test dell'operatore new
rispetto a newInstance()
. Sono rimasto molto sorpreso dalla penalizzazione delle prestazioni di newInstance()
.
ho scritto un po 'su di esso, qui: http://biasedbit.com/new-vs-newinstance/
(. Ci scusiamo per la promozione di auto ... mi piacerebbe inserire il testo qui, ma a questa domanda sarebbe cresciuto di proporzioni)
Cosa Mi piacerebbe sapere perché il flag -server
fornisce un tale aumento di prestazioni quando il numero di oggetti creati cresce in gran parte e non per valori "bassi", ad esempio 100 o 1000.
Ho imparato la lezione con tutta la cosa dei riflessi, questa è solo una curiosità per le ottimizzazioni che la JVM esegue in runtime, in particolare con il flag -server
. Inoltre, se sto facendo qualcosa di sbagliato nel test, apprezzerei il tuo feedback!
Modifica: ho aggiunto una fase di riscaldamento e ora i risultati sono più stabili. Grazie per l'input!
Il collegamento è interrotto:/ –
L'ho risolto! – biasedbit
Il post del blog ha [spostato di nuovo] (http://biasedbit.com/blog/new-vs-newinstance). –