Hi, Compared to avoiding an allocation, not really. In addition to avoiding the calls, this was more for the sake of consistency with the change for EmptyList.
Thanks, Naufal On 28 May 2016 at 23:57, Louis Wasserman <[email protected]> wrote: > Do you actually expect that to represent a significant performance > difference? All those calls sound like things easy to JIT. > > On Sat, May 28, 2016, 11:26 AM Mohamed Naufal <[email protected]> wrote: > >> Hi, >> >> You're right of course, I should have been clearer, no allocation happens >> for clear() on EmptyMap or EmptySet, but a lot of unnecessary calls are >> made. >> >> The call stack for clear() on EmptySet looks something like this: >> AbstractCollection#clear() ->EmptySet#iterator() -> >> Collections#emptyIterator() -> returns the singleton >> EmptyIterator#EMPTY_ITERATOR on which hasNext() is called. >> >> And for EmptyMap: >> AbstractMap#clear() -> EmptyMap#entrySet() -> Collections#emptySet(), >> from which point onwards, it's similar to that of EmptySet. >> >> This could be avoided with the direct override. >> >> Thanks, >> Naufal >> >> On 28 May 2016 at 22:32, Louis Wasserman <[email protected]> wrote: >> >>> Is it? IIRC EmptyMap and EmptySet will use a singleton unmodifiable >>> empty Iterator, so they won't incur any allocation, and the clear() will >>> finish immediately with no work anyway. >>> >>> On Sat, May 28, 2016, 2:05 AM Mohamed Naufal <[email protected]> wrote: >>> >>>> Hi, >>>> >>>> I see that this is applicable to EmptyMap and EmptySet as well, here's >>>> an >>>> updated patch with clear() overridden for all 3 classes. >>>> >>>> Thanks, >>>> Naufal >>>> >>>> On 23 May 2016 at 16:13, Paul Sandoz <[email protected]> wrote: >>>> >>>> > Hi Naufal, >>>> > >>>> > Thanks for looking at this. >>>> > >>>> > For us to accept your patch (no matter how small) you need to become a >>>> > contributor, which requires that you agree to the Oracle Contributor >>>> > Agreement (OCA), see: >>>> > >>>> > http://openjdk.java.net/contribute/ >>>> > >>>> > Thanks, >>>> > Paul. >>>> > >>>> > > On 22 May 2016, at 12:10, Mohamed Naufal <[email protected]> >>>> wrote: >>>> > > >>>> > > Hi, >>>> > > >>>> > > A call to clear() on Collections#EMPTY_LIST is currently redirected >>>> to >>>> > > AbstractList#clear(), which performs a bunch of checks and creates a >>>> > > ListItr object, all of which is unnecessary for an EmptyList. >>>> > > >>>> > > PFA a patch that implements a noop clear() for EmptyList. >>>> > > >>>> > > Thanks, >>>> > > Naufal >>>> > > <EmptyList_clear.diff> >>>> > >>>> > >>>> >>> >>
