Writers
Implementations of java.io.Writer
with different trade-offs.
java.io.OutputStreamWriter
is very flexible and supports any encoding. However its use of sun.nio.cs.StreamEncoder
can result in a noticeable overhead for small writes. It allocates a few temporary objects which for small writes can be noticeable. By addressing only special cases we can make optimizations based on different trade-offs.
Currently we only offer the following two classes:
com.github.marschall.writers.AsciiOutputStreamWriter
, only supports US-ASCII.- does not allocate any objects
- thread-safe
com.github.marschall.writers.BufferedAsciiOutputStreamWriter
, only supports US-ASCII but also buffers like ajava.io.BufferedOutputStream
. This can result in more efficient writes than usingcom.github.marschall.writers.AsciiOutputStreamWriter
withjava.io.BufferedOutputStream
.- does not allocate any objects beyond the initial
byte[]
, the#write
and#append
methods do not allocate memory - uses bulk array copy methods on Java 9+
- not thread-safe
- does not allocate any objects beyond the initial
This project requires Java 11.