bottleneck by java.lang.Class.getAnnotations() - rebased patch
peter.levart at gmail.com
Mon Dec 3 07:41:20 UTC 2012
Hi David, Alan, Alexander and others,
In the meanwhile I have added another annotations space optimization to
the patch. If a Class doesn't inherit any annotations from a superclass,
which I think is a common case, it assigns the same Map instance to
"annotations" as well as "declaredAnnotations" fields. Previously - and
in the original code - this only happened for java.lang.Object and
Here's the updated webrev:
I have also rewritten the performance micro-benchmarks. With the
addition of repeating annotations, one performance aspect surfaces: when
asking for a particular annotation type on a Class and that annotation
is not present, the new repeating annotations support method
AnnotationSupport.getOneAnnotation asks for @ContainedBy meta-annotation
on the annotation type. This can result in an even more apparent
synchronization hot-spot with original code that uses synchronized
initAnnotationsIfNecessary(). This aspect is tested with the 3rd test.
Other 2 tests test the same thing as before but are more stable now,
since now they measure retrieval of 5 different annotation types from
each AnnotatedElement, previously they only measured retrieval of 1
which was very sensitive to HashMap irregularities (it could happen that
a particular key mapped to a bucket that was overloaded in one test-run
and not in another)...
Here're the new tests:
And the corresponding results when run on an i7 CPU on Linux:
On 12/03/2012 02:15 AM, David Holmes wrote:
> On 1/12/2012 4:54 AM, Alan Bateman wrote:
>> On 30/11/2012 18:36, Peter Levart wrote:
>>> So, what do you think? What kind of tests should I prepare in addidion
>>> to those 3 so that the patch might get a consideration?
>> I think this is good work and thanks for re-basing your patch. I know
>> David plans to do a detail review. I think it will require extensive
>> performance testing too, perhaps with some large applications.
> Indeed I do plan a detailed review and have initiated some initial
> performance tests.
> I am also swamped but will try to get to the review this week - and
> will also need to check the referenced annotations updates.
More information about the core-libs-dev