On Wed, 18 Mar 2026 12:30:36 GMT, Eirik Bjørsnøs <[email protected]> wrote:
>> This PR optimizes string concatenation in `URL::toExternalForm`. This method >> is called by `URL:toString` and executes often enough to be noticed during >> startup / classloading profiling. It was previously optimized in JDK 10 via >> JDK-8193034, but we can do more. >> >> Key observations: >> >> * The current method concatenates concatenated strings. We can get away with >> less by flattening and concatenating once per call. >> * JIT StringBuilder concat optimizations prefer consecutive append calls >> withot interleaving code / conditionals >> * The current method does not take advantage of the fact that most URL >> components are optional and several are commonly not present. We can >> specialize for those cheaper common concatenations. >> >> This PR reduces runtime with 60% or more, depending on present URL >> components. (Benchmark results in first comment). I also ran the benchmark >> with compilation excluded and found no regressions for the interpreter case. >> >> Working on this PR revealed that current tests miss coverage for the case >> where a query or ref component is the empty string. Some new test cases are >> added to `Constructor.java`. Otherwise, `URL::toString` seems well tested by >> current tests. >> >> Performance refactoring, `noreg-perf`. > > Eirik Bjørsnøs has updated the pull request incrementally with one additional > commit since the last revision: > > Expand code comment explaining optimizations to be more explicit and > accurate > Right. So maybe a shorter note would serve this purpose just as good. > Something like: > > ```java > // The fast paths and branch-free concatenations in this method are here for > // a reason and should not be updated without checking performance figures. > ``` > > WDYT? This is also good. ------------- PR Comment: https://git.openjdk.org/jdk/pull/30151#issuecomment-4082691884
