[ https://issues.apache.org/jira/browse/OGNL-20?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13098073#comment-13098073 ]
Simone Tripodi commented on OGNL-20: ------------------------------------ Julien, Which complexity has lock/unlock objects? I'm asking because I don't know. Can you point me please to {{ConcurrentHashMap}} doc wich explain how locks only small part of itself and not the whole data? Of course, Viva ultra-specialized ultra-fast concurrent collection, I just want to make sure that, before one of us starts doing the leg-work of moving to the new implementation, it would really add benefits to OGNL performances. ATM I don't see much difference from {code} Map _methodParameterTypesCache = new HashMap(); ... synchronized (_methodParameterTypesCache) { Class[] result; if ( ( result = (Class[]) _methodParameterTypesCache.get( m )) == null ) { _methodParameterTypesCache.put( m, result = m.getParameterTypes() ); } return result; } {code} and {code} Map _methodParameterTypesCache = new ConcurrentHashMap(); ... Class[] result = _methodParameterTypesCache.puIfAbsent( m, m.getParameterTypes() ); return result; {code} except that, for what I can see, the {{m.getParameterTypes()}} that worries you, in the first implementation is invoked only when the key is not found, in the second is always invoked. Please provide me the info I miss, merci en avant! > Performance - Replace synchronized blocks with ReentrantReadWriteLock > --------------------------------------------------------------------- > > Key: OGNL-20 > URL: https://issues.apache.org/jira/browse/OGNL-20 > Project: OGNL > Issue Type: Improvement > Environment: ALL > Reporter: Greg Lively > > I've noticed a lot of synchronized blocks of code in OGNL. For the most part, > these synchronized blocks are controlling access to HashMaps, etc. I believe > this could be done far better using ReentrantReadWriteLocks. > ReentrantReadWriteLock allows unlimited concurrent access, and single threads > only for writes. Perfect in an environment where the ratio of reads is far > higher than writes; which is typically the scenario for caching. Plus the > access control can be tuned for reads and writes; not just a big > synchronized{} wrapping a bunch of code. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira