It depends on the cost of .size(), it is done on each run of the body
and cannot be optimized by the compiler (.size() could change during
the loop).
A common pattern is to do:
for (int i = 0, len = x.size(); i < len; ++i) {
...
}
Peter
On Fri, Feb 4, 2011 at 2:03 PM, Antoine Levy-Lambert <antoine@gmx.de> wrote:
>
> Hello Stefan,
>
> I did not know that using a final variable for the upper bound of a loop
> instead of something.size() makes a difference in terms of performance.
> Interesting.
>
> I just read the original bug report "Project.fireMessageLoggedEvent
> performance fix" [1] and the one you have addressed [2].
>
> In an ideal world, should the compiler not do these optimizations for us
> automatically ?
>
> Regards,
>
> Antoine
>
> [1] https://issues.apache.org/bugzilla/show_bug.cgi?id=19101
> [2] https://issues.apache.org/bugzilla/show_bug.cgi?id=50716
>
>
> On 2/3/2011 4:00 PM, bodewig@apache.org wrote:
>>
>> Author: bodewig
>> Date: Thu Feb 3 21:00:00 2011
>> New Revision: 1066963
>>
>> URL: http://svn.apache.org/viewvc?rev=1066963&view=rev
>> Log:
>> microoptimizations. PR 50716
>>
>> Modified:
>> ant/core/trunk/src/main/org/apache/tools/ant/IntrospectionHelper.java
>> ant/core/trunk/src/main/org/apache/tools/ant/Main.java
>> ant/core/trunk/src/main/org/apache/tools/ant/Target.java
>> ant/core/trunk/src/main/org/apache/tools/ant/UnknownElement.java
>
> .....
>>
>> URL:
>> http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/mail/MailMessage.java?rev=1066963&r1=1066962&r2=1066963&view=diff
>>
>> ==============================================================================
>> --- ant/core/trunk/src/main/org/apache/tools/mail/MailMessage.java
>> (original)
>> +++ ant/core/trunk/src/main/org/apache/tools/mail/MailMessage.java Thu Feb
>> 3 21:00:00 2011
>> @@ -328,7 +328,8 @@ public class MailMessage {
>> // "Header fields are NOT required to occur in any particular
>> order,
>> // except that the message body MUST occur AFTER the headers"
>> // (the same section specifies a reccommended order, which we ignore)
>> - for (int i = 0; i< headersKeys.size(); i++) {
>> + final int size = headersKeys.size();
>> + for (int i = 0; i< size; i++) {
>> String name = (String) headersKeys.elementAt(i);
>> String value = (String) headersValues.elementAt(i);
>> out.println(name + ": " + value);
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
> For additional commands, e-mail: dev-help@ant.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
|