So item 46 in Effective Java says that there shouldn't be a performance penalty using the nice for loops. But the following test in Eclipse on my machine (MacBook Pro, Intel Core Duo, 2.16 GHz) shows a performance penalty.
Given an ArrayList called ints with 1 million Integers, this takes 31 milliseconds: for (int i = 0, size = ints.size(); i < size; i++) ints.get(i).intValue(); And this takes 76 milliseconds: for (Integer i : ints) i.intValue(); What am I missing? Probably just some super naive testing on my part. :) On Thu, Jun 4, 2009 at 12:32 PM, Daniel Rice (דניאל רייס) <[email protected]> wrote: > > The speedup was measured over 3 non-JProfiler runs, invoked within > Eclipse. It's certainly possible that some of the difference is > normal runtime fluctuation but each optimized run was faster than any > of the non-optimized runs. > > Dan > > On Thu, Jun 4, 2009 at 3:28 PM, Scott Blum <[email protected]> wrote: >> On Thu, Jun 4, 2009 at 2:54 PM, Lex Spoon <[email protected]> wrote: >>> >>> The original posts says a 3% improvement. I have found subsequent >>> runs of the compiler to vary by larger than this amount, but let's >>> assume this is the average improvement over many runs. >> >> The 3% is as measured by something like JProfiler, or that's some kind of >> absolute timer? I've found JProfiler sometimes overreports time spent in >> small/fast methods that are invoked many times, but when I measure with no >> profiling and using something like unix time, the differences disappear. >> Does the 3% hold up without -soyc enabled? >> > > > > -- Sent from Piedmont, CA, United States --~--~---------~--~----~------------~-------~--~----~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~----------~----~----~----~------~----~------~--~---
