Non, ils ne sont pas equivalents. Peut etre que toi, tu sais la valeur de next mais sur le principe, ce n'est pas equivalent.
La, le probleme, c'est surtout le compilateur qui genere un code java pas terrible. Meme un outil qui permet de verifier la qualité du code, comme l'a suggéré manitta, ne pourra pas verifier ce genre de chose.
Une approche pourrait etre de faire quelques programmes basiques dans le métalangage dont on connait le résultat optimal et de verifier que le compilateur trouve un truc plus ou moins equivalent.
Par exemple, si on faiton s'attend àCode:AFFICHE_TRACE("ma trace");
Et si on obtient :Code:System.out.println("ma trace");
bah c pas terribleCode:
1
2
3
4
5
6
7
8
9
10 int i = 56; public void affiche_ma_trace() { for(;;) { if(((i * 3) - 10) == (90 + 68)) { System.out.println("ma trace"); break; } } }