Liebes java-Forum,
Mir ist heute aufgefallen, dass die Geschwindigkeit u.a. davon abhängig ist, wie viele Operatoren in einer Zeile stehen, oder ob man diese teilt. Zum Veranschaulichen dieses Beispiel:
Wieso ist fast() (283 ns) schneller als slow() (um 15.000 ns), obwohl beides an sich die selben Operatoren hat? Und warum ist dies ohne Math.sqrt(), also generell, wenn man keine Funktionen nimmt, gleich schnell?
mfg
BH16
Mir ist heute aufgefallen, dass die Geschwindigkeit u.a. davon abhängig ist, wie viele Operatoren in einer Zeile stehen, oder ob man diese teilt. Zum Veranschaulichen dieses Beispiel:
Java:
void slow() {
long time = System.nanoTime();
double a = Math.sqrt(5 + 7*9/2 - 3*5%7);
time = System.nanoTime() - time;
System.out.println(a);
System.out.println(time);
}
void fast() {
long time = System.nanoTime();
double a = 5;
a += 7*9/2;
a -= 3*5%7;
a = Math.sqrt(a);
time = System.nanoTime() - time;
System.out.println(a);
System.out.println(time);
}
Wieso ist fast() (283 ns) schneller als slow() (um 15.000 ns), obwohl beides an sich die selben Operatoren hat? Und warum ist dies ohne Math.sqrt(), also generell, wenn man keine Funktionen nimmt, gleich schnell?
mfg
BH16