JDK-8352891 Performance improvements to ByteArrayOutputStream
Markus KARG
markus at headcrashing.eu
Sat Mar 29 08:56:15 UTC 2025
Supporting what Alan said. Would love to see a static factory for a
non-synchronized byte-array backed OutputStream, like
`OutputStream::newByteArrayOutputStream`. John, if you like we can team
up for authoring this, I have free capacity.
Am 29.03.2025 um 09:33 schrieb Alan Bateman:
> On 28/03/2025 13:05, Engebretson, John wrote:
>>
>> Hi all! This message is to discuss the proposal for a public class
>> that is faster/cheaper than ByteArrayOutputStream. Details are on
>> the ticket [1] so I will only summarize here:
>>
>> - ByteArrayOutputStream is slower than the provided alternative, and
>> wastes memory bandwidth and allocation.
>>
>> - The new alternative cannot replace ByteArrayOutputStream because
>> BAOS exposes two implementation-specific fields.
>>
>> - The problem is broadly present, and different solutions exist in
>> Spring, Tomcat, multiple applications inside my company, and
>> undoubtedly elsewhere.
>>
>> - There are places within the JDK that will benefit from the improved
>> performance.
>>
>>
> There are many possible directions and APIs that could be explored
> here, lots of fun.
>
> The JBS issue seems to all about BAOS performance, esp. due to it
> maintaining a contiguous array and needing to resize. Rather than
> introduce a subclass into the API then maybe you instead explore
> adding a static factory that returns a BAOS with a different
> implementation. For a long time we've been mulling over adding a
> factory method to get a BAOS that isn't thread safe (the undocumented
> synchronization dates from JDK 1.0 and too risky to change after 30
> years of usage). It would also be feasible to have BOAS use a
> different implementation when used directly vs. when subclassed
> although that wouldn't be pretty.
>
> -Alan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/core-libs-dev/attachments/20250329/05117c47/attachment.htm>
More information about the core-libs-dev
mailing list