Related articles |
---|
Optimizations on synchronized methods in java/C++ srikiraju@gmail.com (Srikanth Raju) (2010-07-20) |
Re: Optimizations on synchronized methods in java/C++ marcov@turtle.stack.nl (Marco van de Voort) (2010-07-21) |
Re: Optimizations on synchronized methods in java/C++ Pidgeot18@verizon.invalid (Joshua Cranmer) (2010-07-21) |
From: | Marco van de Voort <marcov@turtle.stack.nl> |
Newsgroups: | comp.compilers |
Date: | Wed, 21 Jul 2010 11:58:06 +0000 (UTC) |
Organization: | Stack Usenet News Service |
References: | 10-07-023 |
Keywords: | optimize, Java |
Posted-Date: | 22 Jul 2010 13:34:48 EDT |
On 2010-07-20, Srikanth Raju <srikiraju@gmail.com> wrote:
> class Foo
> {
> private int a = 0;
> private int b = 0;
> public synchronized doSomethingWithA( int var )
> {
> int tmp = some_function( var ); // heavy computation
> a += tmp;
> }
> public synchronized doSomethingWithB( int var )
> {
> int tmp = some_function( var ); // heavy computation
> b += tmp;
> }
> };
>
> Can the compiler see that the first statement in the methods are local
> and therefore not lock the object for that statement, and hold the
> lock only for the actual addition part, so that it saves time?
I'm no Java expert, but looking at this piece of code, not the state is
flagged as synchronized, but the method, so I don't see how the compiler
could see it is all about "a" and "b" in the first place.
Return to the
comp.compilers page.
Search the
comp.compilers archives again.