Si consideri il seguente metodo:Le definizioni delle variabili sono utilizzate una volta ottimizzate?
private static long maskAndNegate(long l) {
int numberOfLeadingZeros = Long.numberOfLeadingZeros(l)
long mask = CustomBitSet.masks[numberOfLeadingZeros];
long result = (~l) & mask;
return result;
}
Il metodo può essere abbreviato a:
private static long maskAndNegate(long l) {
return (~l) & CustomBitSet.masks[Long.numberOfLeadingZeros(l)];
}
sono questi due rappresentazioni uguali in fase di esecuzione reale? In altre parole, il compilatore Java ottimizza la definizione non necessaria di variabili extra, che ho posto per la leggibilità e il debugging?
Quale compilatore Java? Quale compilatore JIT? Quale piattaforma? In altre parole, l'unico modo affidabile per ottenere una risposta pertinente a * te * è provarlo tu stesso. Non è così difficile. – NPE
"il compiler Java ottimizza ..." nella maggior parte dei casi, il compilatore non ottimizza mai le cose, iirc. la tecnologia HotSpot può ottimizzarlo ed è probabilmente quello che dovresti ricercare. –
Esistono alcune ottimizzazioni eseguite dalla maggior parte, se non da tutti, dai compilatori Java. Prenderò qualsiasi ottimizzazione eseguita da Oracle, GNU (e forse Eclipse) come standard. http://en.wikipedia.org/wiki/Java_compiler#Major_Java_compilers –