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

Dan Berindei dan.berindei at gmail.com
Fri Oct 19 12:28:27 EDT 2012


Galder, what JDK are you using? 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

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.

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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/infinispan-dev/attachments/20121019/b585d325/attachment.html 


More information about the infinispan-dev mailing list