> 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: Revert "BufferedWriter buffer use StringBuilder" This reverts commit da902ca0b0bd6acc003deb8ad1ca0d6485a29a27. ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26022/files - new: https://git.openjdk.org/jdk/pull/26022/files/da902ca0..fccd9678 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26022&range=05 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26022&range=04-05 Stats: 81 lines in 6 files changed: 31 ins; 32 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