Performance of locally copied members ?

Martin Buchholz martinrb at google.com
Mon May 3 10:29:47 PDT 2010


It's a coding style made popular by Doug Lea.
It's an extreme optimization that probably isn't necessary;
you can expect the JIT to make the same optimizations.
(you can try to check the machine code yourself!)
Nevertheless, copying to locals produces the smallest
bytecode, and for low-level code it's nice to write code
that's a little closer to the machine.

Also, optimizations of finals (can cache even across volatile
reads) could be better.  John Rose is working on that.

For some algorithms in j.u.c,
copying to a local is necessary for correctness.

Martin

On Mon, May 3, 2010 at 04:40, Ulf Zibis <Ulf.Zibis at gmx.de> wrote:
> Hi,
>
> in class String I often see member variables copied to local variables.
> In java.nio.Buffer I don't see that (e.g. for "position" in nextPutIndex(int
> nb)).
> Now I'm wondering.
>
> From JMM (Java-Memory-Model) I learned, that jvm can hold non-volatile
> variables in a cache for each thread, so e.g. even in CPU register for few
> ones.
> From this knowing, I don't understand, why doing the local caching manually
> in String (and many other classes), instead trusting on the JVM.
>
> Can anybody help me in understanding this ?
>
> -Ulf
>
>
>


More information about the core-libs-dev mailing list