RFR: 8255878: FilterInputStream is missing implementations of Java 9 InputStream methods

Brian Burkhalter bpb at openjdk.java.net
Fri Sep 3 22:37:19 UTC 2021


On Fri, 3 Sep 2021 22:29:19 GMT, Brian Burkhalter <bpb at openjdk.org> wrote:

> This request proposes to modify `java.io.FilterInputStream` to override `readAllBytes()`, `readNBytes(int)`, `skipNBytes(long)`, and `transferTo(OutputStream)` in order to leverage any performance advantage that the wrapped stream might have over the `java.io.InputStream` implementations of these methods.

A quick and dirty benchmark of `readAllBytes()` and `readNBytes(int)` revealed throughput thrice that of the version without these overrides. The benchmark consisted of calling these methods on a `BufferedInputStream` with a buffer size of 1 MB wrapping a `FileInputStream` opened on a file of size 1 MB.

**Before:**

Benchmark                 Mode  Cnt     Score    Error  Units
ReadNBytes.readAllBytes  thrpt    5  2735.935 ± 26.461  ops/s
ReadNBytes.readNBytes    thrpt    5  2735.949 ± 16.348  ops/s

**After:**

Benchmark                 Mode  Cnt     Score     Error  Units
ReadNBytes.readAllBytes  thrpt    5  8245.034 ± 135.084  ops/s
ReadNBytes.readNBytes    thrpt    5  8320.554 ± 104.707  ops/s

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

PR: https://git.openjdk.java.net/jdk/pull/5367


More information about the core-libs-dev mailing list