[
https://issues.apache.org/jira/browse/OGNL-20?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13133777#comment-13133777
]
Hudson commented on OGNL-20:
----------------------------
Integrated in ognl #147 (See [https://builds.apache.org/job/ognl/147/])
Added OGNL-20 in the issue list
OGNL-20 - Performance - Replace synchronized blocks with ReentrantReadWriteLock
mcucchiara : http://svn.apache.org/viewvc/?view=rev&rev=1188001
Files :
* /commons/proper/ognl/trunk/src/changes/changes.xml
mcucchiara : http://svn.apache.org/viewvc/?view=rev&rev=1188000
Files :
* /commons/proper/ognl/trunk
* /commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAdd.java
* /commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAnd.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAssign.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTBitAnd.java
* /commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTBitOr.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ArrayPropertyAccessor.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/DefaultTypeConverter.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/EvaluationPool.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ExpressionNode.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/MethodAccessor.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/NodeVisitor.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectArrayPool.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectMethodAccessor.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectPropertyAccessor.java
* /commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/Ognl.java
* /commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/OgnlOps.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/OgnlRuntime.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/TypeConverter.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/enhance/ExpressionCompiler.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/Cache.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/CacheException.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/CacheFactory.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ClassCache.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ClassCacheHandler.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ClassCacheImpl.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ConcurrentHashMapCache.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ConcurrentHashMapCacheFactory.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ConcurrentHashMapClassCache.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/Entry.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/HashMapCache.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/HashMapCacheFactory.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/HashMapClassCache.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ReentrantReadWriteLockCache.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ReentrantReadWriteLockCacheFactory.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ReentrantReadWriteLockClassCache.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/CacheEntry.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/CacheEntryFactory.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/ClassCacheEntryFactory.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/DeclaredMethodCacheEntry.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/DeclaredMethodCacheEntryFactory.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/FiedlCacheEntryFactory.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/GenericMethodParameterTypeCacheEntry.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/GenericMethodParameterTypeFactory.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/MethodAccessCacheEntryFactory.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/MethodAccessEntryValue.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/MethodCacheEntry.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/MethodCacheEntryFactory.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/MethodPermCacheEntryFactory.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/PermissionCacheEntry.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/PermissionCacheEntryFactory.java
*
/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/PropertyDescriptorCacheEntryFactory.java
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/TestOgnlRuntime.java
* /commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/ConcurrentHashMapCacheTest.java
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/ConstructorCacheTest.java
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/DeclaredMethodCacheTest.java
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/FieldCacheTest.java
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/GenericMethodParameterTypeCacheTest.java
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/MethodAccessCacheTest.java
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/MethodPermCacheTest.java
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/PermissionCacheTest.java
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/PropertyDescriptorCacheTest.java
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/ArrayElementsTest.java
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/ContextVariableTest.java
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/IndexAccessTest.java
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/InterfaceInheritanceTest.java
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/LambdaExpressionTest.java
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/MethodWithConversionTest.java
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/NestedMethodTest.java
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/NullHandlerTest.java
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/OgnlTestCase.java
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/OperatorTest.java
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/Performance.java
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/PrivateAccessorTest.java
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/PropertyTest.java
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/QuotingTest.java
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/enhance/TestExpressionCompiler.java
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/objects/Bean1.java
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/objects/Bean2.java
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/objects/Bean3.java
*
/commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/objects/Root.java
> 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
> Assignee: Maurizio Cucchiara
> Attachments: Bench Results.txt, Caching_Mechanism_Benchmarks.patch
>
>
> 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.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira