On Thu, 21 Sep 2023 18:57:35 GMT, Claes Redestad <[email protected]> wrote:
>> `URLEncoder` currently appends chars that needs encoding into a >> `java.io.CharArrayWriter`, converts that to a `String`, uses >> `String::getBytes` to get the encoded bytes and then appends these bytes in >> a escaped manner to the output stream. This is somewhat inefficient. >> >> This PR replaces the `CharArrayWriter` with a reusable `CharBuffer` + >> `ByteBuffer` pair. This allows us to encode to the output `StringBuilder` in >> small chunks, with greatly reduced allocation as a result. >> >> The exact size of the buffers is an open question, but generally it seems >> that a tiny buffer wins by virtue of allocating less, and that the per chunk >> overheads are relatively small. > > Claes Redestad has updated the pull request incrementally with one additional > commit since the last revision: > > revert s.length refactoring Looks good, nice allocation reduction. ------------- Marked as reviewed by rriggs (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/15865#pullrequestreview-1638608043
