On Wed, 25 Feb 2026 15:37:02 GMT, Patrick Strawderman <[email protected]> wrote:

> Avoid a byte array copy in encodeToString by using 
> JavaLangAccess#uncheckedNewStringWithLatin1Bytes

I put together a JMH benchmark that tests `encodeToString` on various size 
inputs (100, 100, 10000), and here are the results running locally:

Baseline

Benchmark                              (inputSize)   Mode  Cnt      Score      
Error   Units
Base64Encode.testBase64EncodeToString          100  thrpt   12  25830.222 ± 
1515.781  ops/ms
Base64Encode.testBase64EncodeToString         1000  thrpt   12   6864.086 ±  
361.713  ops/ms
Base64Encode.testBase64EncodeToString        10000  thrpt   12    413.448 ±   
83.529  ops/ms


This patch:

Benchmark                              (inputSize)   Mode  Cnt      Score      
Error   Units
Base64Encode.testBase64EncodeToString          100  thrpt   12  31614.860 ± 
2434.919  ops/ms
Base64Encode.testBase64EncodeToString         1000  thrpt   12   9134.750 ±  
315.348  ops/ms
Base64Encode.testBase64EncodeToString        10000  thrpt   12    706.133 ±  
163.285  ops/ms


Looks like an improvement across the board just looking at throughput, I didn't 
run an allocation rate benchmark but it seems fairly clear to me it would show 
an improvement. I can clean up the benchmark and add it to this PR if desired.

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

PR Comment: https://git.openjdk.org/jdk/pull/29920#issuecomment-3968707787

Reply via email to