Impact of code difference in Collection#contains() worth improving?

Ulf Zibis Ulf.Zibis at CoSoCo.de
Thu Aug 28 17:27:28 UTC 2014


Am 27.08.2014 um 17:51 schrieb Martin Buchholz:
> The ArrayList version saves one byte of bytecode, and is therefore very
> slightly better.  We should bless that version and use it consistently.

+1
Additional argument:
The LinkedList code requires to load 32/64-Bit -1 into CPU. This may take some time on some CPU and 
at least wastes memory footprint.
Additionally register pressure increases.
Vitaly, please correct me, if I'm wrong, just for learning more.

Another advantage is that there is no problem if some implementation of indexOf() erroneously 
returns another negative value than -1. I remember some compare() implementations, which sometimes 
return different values than only -1, 0, +1.

-Ulf

>> ArrayList:
>>
>>      public boolean contains(Object o) {
>>          return indexOf(o) >= 0;
>>      }
>>
>> LinkedList:
>>
>>      public boolean contains(Object o) {
>>          return indexOf(o) != -1;
>>      }
>>




More information about the core-libs-dev mailing list