On 09/29/2014 03:29 PM, Paul Benedict wrote: > Open JDKers, I am forwarding an email to get some clarification. It's been > a common understanding that foreach should perform no differently than the > equivalent for-loop . However, some fellow developers claim there is a > noticable difference in their microbenchmarking. Can you help explain what > is really going on? It's either the case there is a true difference (a > result that would surprise me) or the results are within a margin of error > that make the results insignificant. Please advise.
The actual code that such a forEach loop generates is this: private int forLoop(final int[] array) { int result = 0; int[] a = array; int len = a.length; for (int i = 0; i < len; i++) { int element = a[i]; result ^= element; } return result; } If you get different timings for this one, then the measurements are suspect. Java microbenchmarking is notoriously difficult. Please try to use jmh; you'll get better and easier to interpret results. Andrew. http://openjdk.java.net/projects/code-tools/jmh/