On Mon, 30 Jun 2025 19:38:59 GMT, Brian Burkhalter <[email protected]> wrote:
>> Replaces the implementation `readAllCharsAsString().lines().toList()` with
>> reading into a temporary `char` array which is then processed to detect line
>> terminators and copy non-terminating characters into strings which are added
>> to the list.
>
> Brian Burkhalter has updated the pull request incrementally with one
> additional commit since the last revision:
>
> 8358533: Sherman's version + decrease initial buffer size
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.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/25863#discussion_r2176233023