[infinispan-dev] Avoid Collections.emptySet() / emptyMap() / emptyList

Galder Zamarreño galder at redhat.com
Mon Oct 22 02:25:38 EDT 2012


On Oct 19, 2012, at 6:28 PM, Dan Berindei <dan.berindei at gmail.com> wrote:

> Galder, what JDK are you using?

java version "1.6.0_35"
Java(TM) SE Runtime Environment (build 1.6.0_35-b10-428-11M3811)
Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01-428, mixed mode)

> OpenJDK 1.7 uses EmptyIterator.EMPTY_ITERATOR since 2007:
> 
> http://hg.openjdk.java.net/jdk7/jdk7/jdk/annotate/37a05a11f281/src/share/classes/java/util/Collections.java

Good that the figured out this is non-sense.

> I don't have JDK 1.6 sources on hand to check, but I don't think it's worth optimizing for such an old version anyway.

Why not? We support JDK 1.6, so nothing stops them from running it.

Until we baseline on JDK7 (or 8), I'd leave it in.

> 
> Cheers
> Dan
> 
> 
> On Fri, Oct 19, 2012 at 5:50 PM, Vladimir Blagojevic <vblagoje at redhat.com> wrote:
> Cool! Did not know about this! Is this original idea or others are
> already doing this?
> On 12-10-19 8:31 AM, Galder Zamarreño wrote:
> > Hi all,
> >
> > Re: https://github.com/galderz/infinispan/commit/0609207d13216de81d77ff51dc20652ce270c635
> >
> > Please avoid using these JDK methods where possible. I've created alternative versions in InfinispanCollections util class that provide a better implementation.
> >
> > The problem with the JDK versions is that even if these collections are immutable, if you wanna iterate them (i.e. for(X : emptySet) ), they'll create a brand new Iterator every time they're looped, and that generates useless garbage.
> >
> > The InfinispanCollections versions of emptyX will return a constant singleton iterator which avoids this problem, and avoids the need for client code to check if the collection is empty before looping.
> >
> > Cheers,
> > --
> > Galder Zamarreño
> > galder at redhat.com
> > twitter.com/galderz
> >
> > Project Lead, Escalante
> > http://escalante.io
> >
> > Engineer, Infinispan
> > http://infinispan.org
> >
> >
> > _______________________________________________
> > infinispan-dev mailing list
> > infinispan-dev at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/infinispan-dev
> 
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev
> 
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev


--
Galder Zamarreño
galder at redhat.com
twitter.com/galderz

Project Lead, Escalante
http://escalante.io

Engineer, Infinispan
http://infinispan.org




More information about the infinispan-dev mailing list