> 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 incrementally with one additional commit 
since the last revision:

  Add @ForceInline

-------------

Changes:
  - all: https://git.openjdk.org/jdk/pull/15354/files
  - new: https://git.openjdk.org/jdk/pull/15354/files/d8b94dd0..92d93c02

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=15354&range=04
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=15354&range=03-04

  Stats: 2 lines in 1 file changed: 2 ins; 0 del; 0 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

Reply via email to