[10] RFR: 8179224: Cache strlen of Flag::_name

Dmitry Samersoff dmitry.samersoff at oracle.com
Mon Apr 24 15:56:13 UTC 2017



globals.cpp:870 - you can use memcmp() here.

Looks good to me.


On 2017-04-24 17:12, Claes Redestad wrote:
> Hi,
> startup profiling shows we're spending a surprising amount of cycles
> checking flag constraints and value ranges due to scanning the list of
> flags once for every range/constraint, which means we do more than 300k
> calls to Flag::find_flag.  A complete and elegant fix to this should
> consider rewriting the algorithm, e.g., emitting lists of flags, ranges
> and constraints in lexical order to allow for linear scans, or even
> better inline the range and constraint structs into the Flag struct[1].
> However, it turns out most (>80%) of the measured overhead at startup
> can be avoided by simply caching the result of doing
> strlen(Flag::_name), thus I propose this partial (and temporary?) fix:
> Bug: https://bugs.openjdk.java.net/browse/JDK-8179224
> Webrev: http://cr.openjdk.java.net/~redestad/8179224/hotspot.01/
> Testing: various hotspot command line tests locally and in rbt
> Thanks!
> /Claes
> [1] https://bugs.openjdk.java.net/browse/JDK-8178991

Dmitry Samersoff
Oracle Java development team, Saint Petersburg, Russia
* I would love to change the world, but they won't give me the sources.

More information about the hotspot-runtime-dev mailing list