> I mainly made these optimizations: > > * Avoid allocating `StringBuilder` when there are no characters in the URL > that need to be encoded; > * Implement a fast path for UTF-8. > > In addition to improving performance, these optimizations also reduce > temporary objects: > > * It no longer allocates any object when there are no characters in the URL > that need to be encoded; > * The initial size of StringBuilder is larger to avoid expansion as much as > possible; > * For UTF-8, the temporary `CharArrayWriter`, strings and byte arrays are no > longer needed. > > The results of the `URLEncodeDecode` benchmark: > > > Before: > Benchmark (count) (maxLength) (mySeed) Mode Cnt > Score Error Units > URLEncodeDecode.testEncodeUTF8 1024 1024 3 avgt 15 > 5.587 ? 0.010 ms/op > > After: > Benchmark (count) (maxLength) (mySeed) Mode Cnt > Score Error Units > URLEncodeDecode.testEncodeUTF8 1024 1024 3 avgt 15 > 3.582 ? 0.054 ms/op > > > I also updated the tests to add more test cases.
Glavo has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 19 commits: - fix style - fix style - Merge remote-tracking branch 'origin/master' into url-encoder - Remove UTF-8 fast path - Update UTF8EncodeUtils - Add final modifier - Add @ForceInline - Use byte[] in UTF8EncodeUtils - fix test - UTF8EncodeUtils - ... and 9 more: https://git.openjdk.org/jdk/compare/aba89f20...3b91afcb ------------- Changes: https://git.openjdk.org/jdk/pull/15354/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=15354&range=08 Stats: 163 lines in 2 files changed: 39 ins; 75 del; 49 mod Patch: https://git.openjdk.org/jdk/pull/15354.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/15354/head:pull/15354 PR: https://git.openjdk.org/jdk/pull/15354
