On Oct 23, 2012, at 3:03 PM, Dan Berindei <dan.berin...@gmail.com> wrote:

> On Tue, Oct 23, 2012 at 3:27 PM, Galder Zamarreño <gal...@redhat.com> wrote:
> 
> On Oct 22, 2012, at 10:13 AM, Dan Berindei <dan.berin...@gmail.com> wrote:
> 
> > On Mon, Oct 22, 2012 at 9:25 AM, Galder Zamarreño <gal...@redhat.com> wrote:
> >
> > On Oct 19, 2012, at 6:28 PM, Dan Berindei <dan.berin...@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.
> >
> >
> > My point was that it is a really big change, and further it imposes a 
> > burden on anyone writing code with collections in Infinispan. I'm sure we 
> > will spend non-trivial amounts of time during reviews pointing out places 
> > there the author should have used InfinispanCollections instead of 
> > Collections…
> 
> It's part of your job as pull request handler to check for these things, and 
> many other bad practices that can be carried out… I don't see why is this 
> different to other.
> 
> What's missing here is a check list of things we should be checking for when 
> we handle pull requests.
> 
> I volunteer to do one once I got 2LC out of the way.
> 
> > I would be willing to go for it if a benchmark showed a significant 
> > increase in performance after the change, but you didn't mention any 
> > benchmarks, so I guessed that you didn't see a big difference…
> 
> It's doesn't affect performance directly, but indirectly.
> 
> It's about memory consumption. If you use less memory to do the same work, 
> less burden on GC, and less time spent doing GC.
> 
> 
> How much memory does Infinispan allocate for each put/get and how much of 
> that is used by these iterators? Since we already use null instead of empty 
> collections in lots of places, I bet it's not even 0.01%.

The coding change is based on information gathered via 
https://issues.jboss.org/browse/ISPN-2414 - feel free to browse through it and 
I can upload the snapshot if needed.

> So yeah, these iterators do have an impact, but that impact is negligible, 
> whereas the impact on the developers and reviewers to implement this change 
> is not going to be negligible.

Impact on developers/reviewers? Aren't you exagerating a bit? :)

> Of course, I might be wrong and this patch might improve throughput for local 
> caches by 1%, but based on what I know so far that's not the case.
> 
>  
> >
> >
> > >
> > > Cheers
> > > Dan
> > >
> > >
> > > On Fri, Oct 19, 2012 at 5:50 PM, Vladimir Blagojevic 
> > > <vblag...@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
> > > > gal...@redhat.com
> > > > twitter.com/galderz
> > > >
> > > > Project Lead, Escalante
> > > > http://escalante.io
> > > >
> > > > Engineer, Infinispan
> > > > http://infinispan.org
> > > >
> >
> > _______________________________________________
> > infinispan-dev mailing list
> > infinispan-dev@lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/infinispan-dev
> 
> 
> --
> Galder Zamarreño
> gal...@redhat.com
> twitter.com/galderz
> 
> Project Lead, Escalante
> http://escalante.io
> 
> Engineer, Infinispan
> http://infinispan.org
> 
> 
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev
> 
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev


--
Galder Zamarreño
gal...@redhat.com
twitter.com/galderz

Project Lead, Escalante
http://escalante.io

Engineer, Infinispan
http://infinispan.org


_______________________________________________
infinispan-dev mailing list
infinispan-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/infinispan-dev

Reply via email to