On Thu, 9 Jan 2003, Stephan Michels wrote:

>
>
> On Thu, 9 Jan 2003, Giacomo Pati wrote:
>
> > On Thu, 9 Jan 2003, Stephan Michels wrote:
> >
> > >
> > >
> > >
> > > On 9 Jan 2003 [EMAIL PROTECTED] wrote:
> > >
> > > > giacomo     2003/01/09 06:35:25
> > > >
> > > >   Modified:    src/scratchpad/src/org/apache/cocoon/components/source/impl
> > > >                         SlideSource.java
> > > >   Log:
> > > >   make some method package protected instead of privat to increase performance 
>by avoiding 'access emulated by a synthetic accessor method' (objected by eclipse)
> > > >
> > >
> > >
> > > Hmm, do really think that using package protected modifiers instead of
> > > private modifiers make the implementation faster. For some time I read
> > > an article, which says the private modifier make the fastest access
> > > possible.
> >
> > You can prove that by yourself using the following code:
> >
> > public class A
> > {
> >   private int a;
> >
> >   public A()
> >   {
> >     AA aa = new AA();
> >   }
> >
> >   private int foo( AA a )
> >   {
> >     AA b = a;
> >     return 0;
> >   }
> >
> >   public class AA
> >   {
> >     public AA()
> >     {
> >       int b = a;
> >     }
> >     public void b()
> >     {
> >       foo( this );
> >     }
> >   }
> > }
> >
> > Compile this and produce an assembly listing (javap -c A).
> >
> > Now, remove the private modifier from the 'int a' as well as from method
> > foo to make it package protected.
> >
> > If you compare these assably listing you'll see what java does with it.
> >
> > Access to the private variable 'a' as well as to the private method
> > 'foo' from within the inner class is indirected by use of
> > a synthetic accessor method.
>
> Okay, now I see what you mean, because of the inner class
> SlideSourceOutputStream the accessor methods will be produced. And
> now Eclipse thinks that if I change all used member variables to
> package private all run faster.
>
> If you insert
>
>   private int bar()
>   {
>     return a+3;
>   }
>
> you will see that bar doesn't need a synthetic accessor method.

Of course not, it's in the same instance.

> So have a bit more Performance, with a package private member variables.
>
> First rule of performance tuning: Don't do it. cit. Bitter Java(I think)

or better 'don't access private outer class methods/variables from inner
classes'.

Ok, does any other here have an oppinion on this?

Giacomo


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to