Warum ist `2 * (i * i)` schneller als `2 * i * i` in Java?
Hallo zusammen! Ich schreibe einen einfachen Benchmark, um die Performance der Multiplikation in Java zu vergleichen. Mir ist ein seltsames Verhalten aufgefallen: Der Code mit dem Ausdruck `2 * (i * i)` läuft konstant schneller als `2 * i * i`. Hier ist ein Beispiel:\n\n```java\npublic class Test {\n public static void main(String[] args) {\n long start = System.nanoTime();\n long sum = 0;\n for (int i = 0; i < 1_000_000_000; i++) {\n sum += 2 * i * i; // langsam\n }\n System.out.println(sum);\n System.out.println("Time: " + (System.nanoTime() - start) / 1_000_000 + " ms");\n }\n}\n```\n\nWenn man `2 * i * i` durch `2 * (i * i)` ersetzt, verringert sich die Ausführungszeit fast um die Hälfte! Ich hatte erwartet, dass es keinen Unterschied gibt, da es mathematisch dasselbe ist. Vielleicht hängt es mit der Reihenfolge der Berechnungen und