In questa discussione circa il sovraccarico delle prestazioni di utilizzo reflection, si afferma:Che tipo di ottimizzazioni runtime si perdono se usiamo riflessione
L'utilizzo di riflessione può causare alcune ottimizzazioni runtime da perdere. Ad esempio, il codice seguente è altamente probabile essere ottimizzata da una macchina virtuale Java:
int x = 1; x = 2; x = 3;
codice equivalente usando Field.set *() non può.
Senza riflessione, che tipo di ottimizzazioni di runtime dovrebbero essere eseguite da JVM?
Avrebbe semplicemente eseguito 'x = 3'. Tutti i tipi di trucchi in linea, eliminazione dell'opcode, ecc. Spariscono quando si riflette il mix. –
Questa è una domanda interessante, ma penso che sia troppo ampia per una singola domanda SO. – chrylis
I compiti a x non fanno nulla. È una variabile locale, nessuna multi-thread, nessuna concorrenza e può essere rimossa. Se si utilizza Field.set, l'altro thread potrebbe avere accesso alla variabile in modo che non possa mai essere ottimizzata. Questo è quello che penso. –