On 27 Jan 2016, at 17:24, Claes Redestad <claes.redes...@oracle.com> wrote:
> > On 2016-01-18 17:20, Claes Redestad wrote: >> >> The ability for URLStreamHandler implementations to override the parseURL >> method seem to prevent this improvement unless we only do this for a subset >> of known, well-behaved URLStreamHandlers, which likely defeat the >> optimization by adding complexity. > > Right, the fast path can only be safely used for the non-overrideable > handlers (jrt and file), but turns out we can make that work without > penalizing other cases: > > http://cr.openjdk.java.net/~redestad/8147462/webrev.04/ This looks fine Claes. Maybe just a comment on the fact that character based comparison is being used for perf reasons. In an older version of the webrev, there was an updated to an existing test, test/java/net/URI/URItoURLTest.java. I assume this was just mistakenly omitted from the latest version? -Chris. > Relevant micros[1] show that this brings a benefit to file/jrt, even when > mixed with slow path URIs, while micros only hitting slow path > (newHttpURIToURL, opaqueURIToURL) doesn't regress: > > Before: > Benchmark Mode Cnt Score Error Units > URIBench.mixedURIToURL avgt 30 463.748 ± 14.445 ns/op > URIBench.newHttpURIToURL avgt 30 441.497 ± 20.173 ns/op > URIBench.newURIToURL avgt 30 227.106 ± 9.055 ns/op > URIBench.opaqueURIToURL avgt 30 320.904 ± 13.232 ns/op > > Patched: > Benchmark Mode Cnt Score Error Units > URIBench.mixedURIToURL avgt 30 441.773 ± 16.530 ns/op > URIBench.newHttpURIToURL avgt 30 433.946 ± 18.569 ns/op > URIBench.newURIToURL avgt 30 147.379 ± 6.349 ns/op > URIBench.opaqueURIToURL avgt 30 316.632 ± 12.940 ns/op > > /Claes > > [1] http://cr.openjdk.java.net/~redestad/8147462/URIBench.java