RRF: 8187123: (reflect) Class#getCanonicalName and Class#getSimpleName is a part of performance issue (original) (raw)
mandy chung mandy.chung at oracle.com
Wed May 2 23:29:46 UTC 2018
- Previous message: RRF: 8187123: (reflect) Class#getCanonicalName and Class#getSimpleName is a part of performance issue
- Next message: RRF: 8187123: (reflect) Class#getCanonicalName and Class#getSimpleName is a part of performance issue
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 4/30/18 5:49 AM, Claes Redestad wrote:
Hi,
please review this patch to enable caching of getCanonicalName and getSimpleName, repeated calls of which has been reported to be a performance bottleneck. The caching improves performance of these methods by up to 20x. Rather than adding new fields to Class itself, which would have footprint implications on classes, we can piggy-back on Class$ReflectionData object. Webrev: http://cr.openjdk.java.net/~redestad/8187123/open.02/ Bug: https://bugs.openjdk.java.net/browse/JDK-8187123
It's a fine idea to leverage ReflectionData to cache the names. Can you update line 2916 for this change? For example, reflection data caches the names and members. It will get invalidated when JVM TI RedefineClasses is called.
newReflectionData could be updated to copy the simpleName and canonicalName from oldReflectionData. The perf isn't a concern when the class is being redefined. As the class name is unchanged, it might be good to copy the names from older reflection data.
Mandy
- Previous message: RRF: 8187123: (reflect) Class#getCanonicalName and Class#getSimpleName is a part of performance issue
- Next message: RRF: 8187123: (reflect) Class#getCanonicalName and Class#getSimpleName is a part of performance issue
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]