[concurrency-interest] general performance question

Vladimir Ivanov vladimir.x.ivanov at oracle.com
Thu Dec 22 02:54:59 EST 2011


Hanson,

No, at least I'm not aware about it :) There is [1], but most of the 
features are present in 6u as well.

Digressing from the main topic and considering Hotspot Express model, 6u 
releases featured latest Hotspot with all performance enhancements until 
recently(HS20). 7-specific(HS21/22) compiler features are 
JSR292/invokedynamic support and tiered compilation right now.

Best regards,
Vladimir Ivanov

[1] 
http://docs.oracle.com/javase/7/docs/technotes/guides/vm/performance-enhancements-7.html

On 12/22/11 3:03 AM, Hanson Char wrote:
> Interesting.  Is there a .../7_performance.html equivalent page ?
>
> Regards,
> Hanson
>
> On Wed, Dec 21, 2011 at 1:37 PM, Vladimir Ivanov
> <vladimir.x.ivanov at oracle.com <mailto:vladimir.x.ivanov at oracle.com>> wrote:
>
>     Vitaly,
>
>     No, synchronized attribute doesn't prevent method from being inlined
>     by JIT compiler in Hotspot. Lock coarsening(redundant lock
>     elimination) optimization [1] [2] in C2 greatly benefits from this.
>
>     Best regards,
>     Vladimir Ivanov
>
>     [1]
>     http://java.sun.com/__performance/reference/__whitepapers/6_performance.__html#2.1.2
>     <http://java.sun.com/performance/reference/whitepapers/6_performance.html#2.1.2>
>     [2]
>     http://www.google.com/__codesearch#Y_pa0sa9c2w/src/__share/vm/opto/callnode.cpp&l=__1213
>     <http://www.google.com/codesearch#Y_pa0sa9c2w/src/share/vm/opto/callnode.cpp&l=1213>
>
>
>     On 12/21/11 9:33 PM, Vitaly Davidovich wrote:
>
>         IIRC, synch on method generates less bytecode but that would
>         only matter
>         if the method was on the bytecode size boundary for inlining (I
>         believe
>         default is 35 byte codes), but i think synchronization already
>         prevents
>         inlining as a heuristic.
>
>         On Dec 21, 2011 11:48 AM, "Nathan Reynolds"
>         <nathan.reynolds at oracle.com <mailto:nathan.reynolds at oracle.com>
>         <mailto:nathan.reynolds at __oracle.com
>         <mailto:nathan.reynolds at oracle.com>>> wrote:
>
>             Use javap to check the bytecode output from both.  From a
>             performance perspective, I don't think it shouldn't matter.
>             However, from an API perspective it matters.  Let's say you
>         derive
>             the class and implement someMethod.  If the synchronized
>         keyword is
>             on the method, then Eclipse or FindBugs could be configured
>         to warn
>             you that the overridden method doesn't declare synchronized.
>           The
>             tool suggests that this means the overridden method is not
>         correctly
>             synchronized.  On the other hand, "synchronized(this)" will
>         trigger
>             Eclipse or FindBugs to warn you that the code is
>         synchronizing on a
>             publicly accessible object.  This means that if another piece of
>             code synchronizes on the object then there might be an
>         unintended
>             scalability problem.
>
>             Nathan Reynolds
>         <http://psr.us.oracle.com/__wiki/index.php/User:Nathan___Reynolds <http://psr.us.oracle.com/wiki/index.php/User:Nathan_Reynolds>>
>         |
>             Consulting Member of Technical Staff | 602.333.9091
>         <tel:602.333.9091> <tel:602.333.9091 <tel:602.333.9091>>
>             Oracle PSR Engineering <http://psr.us.oracle.com/> | Server
>         Technology
>
>
>             On 12/21/2011 8:45 AM, Jha, Navin wrote:
>
>                 Is there an advantage to do:
>
>                 someMethod(...) {
>                          synchronized(this) {
>                                  ................
>                                  ................
>                                  ................
>                          }
>                 }
>
>                 instead of:
>                 synchronized someMethod(...) {
>                 ................
>                 ................
>                 ................
>                 }
>
>                 Even when the entire method needs to be synchronized? I
>             understand in general it is a good practice to use
>             synchronized blocks since more often than not only certain
>             lines need to be synchronized.
>
>                 -Navin
>
>                 _________________________________________________
>                 Concurrency-interest mailing list
>             Concurrency-interest at cs.__oswego.edu
>             <mailto:Concurrency-interest at cs.oswego.edu>
>             <mailto:Concurrency-interest at __cs.oswego.edu
>             <mailto:Concurrency-interest at cs.oswego.edu>>
>             http://cs.oswego.edu/mailman/__listinfo/concurrency-interest
>             <http://cs.oswego.edu/mailman/listinfo/concurrency-interest>
>
>
>             _________________________________________________
>             Concurrency-interest mailing list
>         Concurrency-interest at cs.__oswego.edu
>         <mailto:Concurrency-interest at cs.oswego.edu>
>         <mailto:Concurrency-interest at __cs.oswego.edu
>         <mailto:Concurrency-interest at cs.oswego.edu>>
>
>         http://cs.oswego.edu/mailman/__listinfo/concurrency-interest
>         <http://cs.oswego.edu/mailman/listinfo/concurrency-interest>
>
>
>
>         _________________________________________________
>         Concurrency-interest mailing list
>         Concurrency-interest at cs.__oswego.edu
>         <mailto:Concurrency-interest at cs.oswego.edu>
>         http://cs.oswego.edu/mailman/__listinfo/concurrency-interest
>         <http://cs.oswego.edu/mailman/listinfo/concurrency-interest>
>
>     _________________________________________________
>     Concurrency-interest mailing list
>     Concurrency-interest at cs.__oswego.edu
>     <mailto:Concurrency-interest at cs.oswego.edu>
>     http://cs.oswego.edu/mailman/__listinfo/concurrency-interest
>     <http://cs.oswego.edu/mailman/listinfo/concurrency-interest>
>
>


More information about the Concurrency-interest mailing list