public class Test {
public static void main(String[] args) {
int x = 150_000;
long start = System.currentTimeMillis();
for(int i = 0; i < x; i++) {
f1(i);
}
long end = System.currentTimeMillis();
System.out.println((end - start)/1000.0);
}
private static long f1(int n) {
long x = 1;
for(int i = 0; i < n; i++) {
x = x + x;
}
return x;
}
}
Qualcuno può spiegare perché l'impostazione x per 150_000
o 4_000_000
o addirittura 2_000_000_000
non cambia il tempo di esecuzione di questo ciclo?Perché il tempo di esecuzione del ciclo for non cambia?
Probabilmente il compilatore è abbastanza intelligente da rilevare che non sta accadendo nulla nel ciclo in modo che si ottimizzi. – Tunaki
Come hai valutato? –
@Tunaki Questa sarebbe la mia ipotesi. 'f1' sta restituendo un valore, ma quel valore non è mai usato, e nessun'altra variabile viene modificata durante il metodo. Avrebbe senso (almeno per me) che il compilatore ignori completamente la chiamata. –