RFR: 8005051: optimized defaults for Iterator.forEachRemaining (original) (raw)

Akhil Arora akhil.arora at oracle.com
Tue Apr 23 19:14:05 UTC 2013


On 04/20/2013 01:42 PM, Ulf Zibis wrote:

Am 20.04.2013 01:59, schrieb Akhil Arora:

Please review the addition of optimized defaults for Iterator's forEachRemaining to ArrayList, LinkedList, Vector and CopyOnWriteArrayList. The unit test has a performance comparison test (disabled by default) that measures the difference between this method and hasNext()/next(). Significant improvements were measured by overriding the default forEachRemaining by these classes (others, not so much).

http://cr.openjdk.java.net/~akhil/8005051.1/webrev/ You mostly do not need ".this.", e.g. in Vector: Compare lines 1160 <-> 1137 Line 1165 could be: final Object[] elementData = this.elementData; or simply final Object[] elements = elementData;

done

To be in line with old habits, please remove space after casts. See also: http://bugs.sun.com/bugdatabase/viewbug.do?bugid=6939278

I see that new code by others is using spaces after casts, so I would like to stick with that convention.

For performance reasons it could be considered to make Itr final and copy its methods to ListItr.

That is beyond the scope of this issue, needs a new issue.

Interesting: I ever thought, private members are always final, but here a private method becomes extended.

-Ulf



More information about the core-libs-dev mailing list