On Feb 21 2014, at 14:56 , Martin Buchholz <marti...@google.com> wrote:

> You should do <tt> -> code conversion separately, and do it pervasively 
> across the entire JDK.

From your lips to God's ears.... I keep suggesting this along with a restyle to 
official style every time we create new repos. Seems unlikely unfortunately as 
it makes backports harder. 

> This is not right.
> +     * {@code 
> (o==null&nbsp;?&nbsp;get(i)==null&nbsp;:&nbsp;o.equals(get(i)))}

Corrected.

> You accidentally deleted a stray space here?
> 
> -        this.elementData = EMPTY_ELEMENTDATA;
> +       this.elementData = EMPTY_ELEMENTDATA;

Corrected.

>      public ArrayList(int initialCapacity) {
> -        super();
>          if (initialCapacity < 0)
>              throw new IllegalArgumentException("Illegal Capacity: "+
>                                                 initialCapacity);
> -        this.elementData = new Object[initialCapacity];
> +        this.elementData = (initialCapacity > 0)
> +                ? new Object[initialCapacity]
> +                : EMPTY_ELEMENTDATA;
>      }
> 
> When optimizing for special cases, we should try very hard minimize overhead 
> in the common case.  In the above, we now have two branches in the common 
> case.  Instead,
> 
> if (initialCapacity > 0) this.elementData = new Object[initialCapacity];
> else if (initialCapacity == 0) this.elementData = EMPTY_ELEMENTDATA;
> else barf

Corrected.

Thanks as always for the feedback.

Mike

> 
> 
> 
> On Fri, Feb 21, 2014 at 2:41 PM, Mike Duigou <mike.dui...@oracle.com> wrote:
> Hello all;
> 
> This changeset consists of two small performance improvements for ArrayList. 
> Both are related to the lazy initialization introduced in JDK-8011200.
> 
> The first change is in the ArrayList(int capacity) constructor and forces 
> lazy initialization if the requested capacity is zero. It's been observed 
> that in cases where zero capacity is requested that it is very likely that 
> the list never receives any elements. For these cases we permanently avoid 
> the allocation of an element array.
> 
> The second change, noticed by Gustav Ã…kesson, involves the 
> ArrayList(Collection c) constructor. If c is an empty collection then there 
> is no reason to inflate the backing array for the ArrayList.
> 
> http://cr.openjdk.java.net/~mduigou/JDK-8035584/0/webrev/
> 
> I also took the opportunity to the <tt></tt> -> {@code } conversion for the 
> javadoc.
> 
> Enjoy!
> 
> Mike
> 

Reply via email to