[11] RFR: 8197849: Misc improvements to URL parsing

Daniel Fuchs daniel.fuchs at oracle.com
Wed Feb 14 16:25:20 UTC 2018


Hi Claes,

Your proposed changes to ParseUtil look reasonable
to me, though I had to carefully compare the characters
in the range (c >= '&' && c <= ':') with the
L_ENCODED / H_ENCODED masks to convince myself
that there was no behavior change to
ParseUtil::firstEncodeIndex.

I wonder whether this would deserve some additional
comment - though I'm not sure how it could be formulated.

Given the sensitivity of the impacted code maybe it would
be prudent to wait for a second review before pushing.

best regards,

-- daniel

On 14/02/2018 15:30, Claes Redestad wrote:
> Hi,
> 
> as a means to improve startup in some applications, please review this 
> set of small improvements to improve both interpreted and compiled 
> performance of creating and handling certain jar URLs. Some of the 
> changes in sun.net.www.ParseUtil::encodePath have a small, positive 
> effect when dealing with other types of path resources.
> 
> Bug: https://bugs.openjdk.java.net/browse/JDK-8197849
> 
> Webrev: http://cr.openjdk.java.net/~redestad/8197849/jdk.00/
> 
> This shaves off a percent or so of the total bytecode execution in a few 
> of our startup tests:
> 
> - ParseUtil::encodePath cost is reduced ~20% during startup, averaging 
> ~10-15% faster for typical inputs after JIT. Weird examples like paths 
> only consisting of slashes and dots can be seen to take a small hit due 
> to not getting special treatment.
> 
> - ParseUtil::canonizeString cost on startup reduced by 50% (~15% 
> improvement after JIT) for typical inputs by adding a test to return 
> directly if there's no need to "canonize" the string (which is typically 
> always the case for well-formed jar files). I added a sanity test to 
> ensure I didn't accidentally change semantics of cases that would lead 
> to canonicalization.
> 
> - Removed a couple of unnecessary allocation in 
> sun.net.www.protocol.jar.Handler. Maybe there are some good reasons not 
> to make ParseUtil a final utility class with only static methods and a 
> private constructor, though...
> 
> Thanks!
> 
> /Claes



More information about the net-dev mailing list