On Tue, 1 Jul 2025 15:10:10 GMT, Brian Burkhalter <b...@openjdk.org> wrote:

>> src/java.base/share/classes/java/io/Reader.java line 482:
>> 
>>> 480:                 if (pos == limit) {
>>> 481:                     int len = limit - start;
>>> 482:                     if (len >= cb.length) {
>> 
>> Observation: this algorithm will get less efficient as the line length 
>> approaches cb.length.
>> Starting at sb.length/2 It will take 2 reads for every line and will not 
>> resize the buffer.
>> I think resizing the buffer when the line length exceeds cb.length/2 will be 
>> more efficient (cpu wise).
>> The decoding of the bytes to chars and the setup of the decoder is the 
>> expensive part.
>> For most typical line length distributions it would not make a difference 
>> but would improve the performance of the outliners.
>
>> I think resizing the buffer when the line length exceeds cb.length/2 will be 
>> more efficient (cpu wise).
> 
> I concur. I missed that this had been changed in the most recent commit.

So changed in 
[9eeed76](https://github.com/openjdk/jdk/pull/25863/commits/9eeed767ced6e7b86ac7c2c73fb2d32063d88a7a).

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

PR Review Comment: https://git.openjdk.org/jdk/pull/25863#discussion_r2178698226

Reply via email to