[ 
https://issues.apache.org/jira/browse/SANDBOX-401?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13222256#comment-13222256
 ] 

Benedikt Ritter commented on SANDBOX-401:
-----------------------------------------

Hm, I think the {{hashCode()}} implementation I proposed is not thread safe. 
I'm not sure if that is an issue, since {{AccessibleObjectDescriptor}} is 
created in line 86 to be used directly to retrieve an {{AccessibleObject}} via 
{{cache.get()}} in line 92. I think that it is not possible for two threads to 
access the same {{AccessibleObjectDescirptor}} at once, before the hash code 
has been computed the first time (but I'm not sure).
If it is an issue there are two ways to improve the patch:
# implement a private helper method {{computeHashCode()}} that computes the 
hash code and assigns it to the private hash code field in the constructor. 
This has the advantage, that the hashcode field can be final, making 
{{AccessbileObjectDescirptor}} immutable. However it will cause initialization 
to take longer.
# Compute the hash code into a local variable in {{hashCode()}} and assign it's 
value to the hashcode field, once computation is complete.

Please let me know, what you think.
Benedikt
                
> [BeanUtils2] Performance improvement: store hash code of 
> AccessibleObjectDescriptor as member variable
> ------------------------------------------------------------------------------------------------------
>
>                 Key: SANDBOX-401
>                 URL: https://issues.apache.org/jira/browse/SANDBOX-401
>             Project: Commons Sandbox
>          Issue Type: Improvement
>          Components: BeanUtils2
>    Affects Versions: Nightly Builds
>            Reporter: Benedikt Ritter
>         Attachments: SANDBOX-401.txt
>
>
> As discussed on the ML, we should store the hash code of 
> AccessibleObjectDescriptor in a private member variable after it has been 
> computed the first time. The computed value can be returned on subsequent 
> invocations. Since AccessibleObjectDescriptor is immutable (all of its fields 
> are final) the hash code can never change, once an AccessibleObjectDescriptor 
> has been initialized.

--
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

        

Reply via email to