commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Benedikt Ritter (Commented) (JIRA)" <>
Subject [jira] [Commented] (SANDBOX-401) [BeanUtils2] Performance improvement: store hash code of AccessibleObjectDescriptor as member variable
Date Mon, 05 Mar 2012 10:17:58 GMT


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.
> [BeanUtils2] Performance improvement: store hash code of AccessibleObjectDescriptor as
member variable
> ------------------------------------------------------------------------------------------------------
>                 Key: SANDBOX-401
>                 URL:
>             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:!default.jspa
For more information on JIRA, see:


View raw message