> BufferedWriter -> OutputStreamWriter -> StreamEncoder > > In this call chain, BufferedWriter has a char[] buffer, and StreamEncoder has > a ByteBuffer. There are two layers of cache here, or the BufferedWriter layer > can be removed. And when charset is UTF8, if the content of write(String) is > LATIN1, a conversion from LATIN1 to UTF16 and then to LATIN1 will occur here. > > LATIN1 -> UTF16 -> UTF8 > > We can improve BufferedWriter. When the parameter Writer instanceof > OutputStreamWriter is passed in, remove the cache and call it directly. In > addition, improve write(String) in StreamEncoder to avoid unnecessary > encoding conversion.
Shaojin Wen has updated the pull request incrementally with one additional commit since the last revision: BufferedWriter buffer use StringBuilder ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26022/files - new: https://git.openjdk.org/jdk/pull/26022/files/0e0c3aee..da902ca0 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26022&range=04 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26022&range=03-04 Stats: 81 lines in 6 files changed: 32 ins; 31 del; 18 mod Patch: https://git.openjdk.org/jdk/pull/26022.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26022/head:pull/26022 PR: https://git.openjdk.org/jdk/pull/26022