Il java compiler (il javac predefinito che viene fornito in JDK1.6.0_21) ottimizza il codice per impedire che lo stesso metodo venga chiamato con gli stessi argomenti più e più volte? Se ho scritto questo codice:Ottimizzazione del compilatore Java per chiamate di metodo ripetute?
public class FooBar {
public static void main(String[] args) {
foo(bar);
foo(bar);
foo(bar);
}
}
Sarebbe il metodo foo(bar)
eseguito solo una volta? In tal caso, c'è un modo per prevenire questa ottimizzazione? (Sto cercando di confrontare il runtime per due algos, uno iterativo e uno comparativo, e voglio chiamarli un po 'di volte per ottenere un campione rappresentativo)
Qualsiasi intuizione sarebbe molto apprezzata; Ho preso questo problema fino alla follia (ho pensato che il mio computer fosse follemente veloce per un po ', quindi ho continuato ad aggiungere chiamate di metodo fino a quando non ho ottenuto l'errore code too large
a 43671 linee).
Non vedo davvero perché il compilatore rimuova le chiamate di metodo come suggerite. Non conosco la risposta effettiva ma c'è un limite di 64k sul codice nei metodi. Quindi il compilatore non sta rimuovendo le chiamate, sta solo raggiungendo il limite della dimensione del codice all'interno del tuo metodo. Lo farebbe anche se avessi altre linee di codice all'interno di quel metodo. –