RFR: 8358533: Improve performance of java.io.Reader.readAllLines
Markus KARG
duke at openjdk.org
Thu Jun 19 11:18:04 UTC 2025
On Wed, 18 Jun 2025 16:57:22 GMT, Brian Burkhalter <bpb at openjdk.org> wrote:
>> src/java.base/share/classes/java/io/Reader.java line 455:
>>
>>> 453: List<String> lines = new ArrayList<String>();
>>> 454:
>>> 455: StringBuilder sb = new StringBuilder(82);
>>
>> Is there a reason for this pre-allocation? If the whole content is smaller than 8192 in size, this allocation would be redundant because we are going through the string constructor path.
>
>> Is there a reason for this pre-allocation?
>
> What would you suggest? Start with a smaller allocation and increase it if needed? There is no possibility of knowing the length of the stream.
As this PR explicitly targets performance and as the aim of this method is to keep **all** content in-memory anyways, I wonder if it would be acceptable and even faster to pre-allocate `new StringBuilder(TRANSFER_BUFFER_SIZE)`? In the end, this allocation is just temporary.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/25863#discussion_r2156717996
More information about the core-libs-dev
mailing list