Avatar ·

Pourquoi 2 * (i * i) est-il plus rapide que 2 * i * i en Java ?

Bonjour à tous ! J'écris un simple benchmark pour comparer les performances de la multiplication en Java. J'ai remarqué un comportement étrange : le code avec l'expression `2 * (i * i)` s'exécute systématiquement plus rapidement que `2 * i * i`. Voici un exemple : ```java public class Test { public static void main(String[] args) { long start = System.nanoTime(); long sum = 0; for (int i = 0; i < 1_000_000_000; i++) { sum += 2 * i * i; // lent } System.out.println(sum); System.out.println("Time: " + (System.nanoTime() - start) / 1_000_000 + " ms"); } } ``` Si je remplace `2 * i * i` par `2 * (i * i)`, le temps d'exécution diminue presque de moitié ! Je m'attendais à ce qu'il n'y ait pas de différence, car mathématiquement c'est la même chose. Peut-être que cela est lié à l'ordre des calculs et