RFR: 8378698: Optimize Base64.Encoder#encodeToString [v2]
Patrick Strawderman
duke at openjdk.org
Fri Feb 27 00:38:09 UTC 2026
On Thu, 26 Feb 2026 22:32:23 GMT, Chen Liang <liach at openjdk.org> wrote:
> Apparently the new benchmark takes 33 mins to be fully run. I recommend reducing the iterations as done in https://bugs.openjdk.org/browse/JDK-8287810.
Whoops, I just used the defaults. I've changed it to be more in line with the other benchmarks.
I've rerun it with the new settings and allocation information included, and this is what I get locally on an M1 Macbook.
make test TEST="micro:Base64EncodeToString" MICRO='RESULTS_FORMAT=JSON;OPTIONS=-prof gc'
baseline:
Benchmark (inputSize) Mode Cnt Score Error Units
Base64EncodeToString.testEncodeToString 10 thrpt 10 37077.450 ± 6720.486 ops/ms
Base64EncodeToString.testEncodeToString:gc.alloc.rate 10 thrpt 10 3109.573 ± 566.545 MB/sec
Base64EncodeToString.testEncodeToString:gc.alloc.rate.norm 10 thrpt 10 88.000 ± 0.001 B/op
Base64EncodeToString.testEncodeToString:gc.count 10 thrpt 10 169.000 counts
Base64EncodeToString.testEncodeToString:gc.time 10 thrpt 10 102.000 ms
Base64EncodeToString.testEncodeToString 100 thrpt 10 44531.727 ± 2228.099 ops/ms
Base64EncodeToString.testEncodeToString:gc.alloc.rate 100 thrpt 10 13928.036 ± 698.474 MB/sec
Base64EncodeToString.testEncodeToString:gc.alloc.rate.norm 100 thrpt 10 328.000 ± 0.001 B/op
Base64EncodeToString.testEncodeToString:gc.count 100 thrpt 10 233.000 counts
Base64EncodeToString.testEncodeToString:gc.time 100 thrpt 10 151.000 ms
Base64EncodeToString.testEncodeToString 1000 thrpt 10 8071.402 ± 334.834 ops/ms
Base64EncodeToString.testEncodeToString:gc.alloc.rate 1000 thrpt 10 20996.105 ± 871.475 MB/sec
Base64EncodeToString.testEncodeToString:gc.alloc.rate.norm 1000 thrpt 10 2728.000 ± 0.001 B/op
Base64EncodeToString.testEncodeToString:gc.count 1000 thrpt 10 298.000 counts
Base64EncodeToString.testEncodeToString:gc.time 1000 thrpt 10 191.000 ms
Base64EncodeToString.testEncodeToString 10000 thrpt 10 605.186 ± 19.722 ops/ms
Base64EncodeToString.testEncodeToString:gc.alloc.rate 10000 thrpt 10 15424.548 ± 502.632 MB/sec
Base64EncodeToString.testEncodeToString:gc.alloc.rate.norm 10000 thrpt 10 26728.006 ± 0.001 B/op
Base64EncodeToString.testEncodeToString:gc.count 10000 thrpt 10 275.000 counts
Base64EncodeToString.testEncodeToString:gc.time 10000 thrpt 10 176.000 ms
With patch:
Benchmark (inputSize) Mode Cnt Score Error Units
Base64EncodeToString.testEncodeToString 10 thrpt 10 74105.364 ± 2901.628 ops/ms
Base64EncodeToString.testEncodeToString:gc.alloc.rate 10 thrpt 10 3957.248 ± 154.970 MB/sec
Base64EncodeToString.testEncodeToString:gc.alloc.rate.norm 10 thrpt 10 56.000 ± 0.001 B/op
Base64EncodeToString.testEncodeToString:gc.count 10 thrpt 10 201.000 counts
Base64EncodeToString.testEncodeToString:gc.time 10 thrpt 10 139.000 ms
Base64EncodeToString.testEncodeToString 100 thrpt 10 56614.125 ± 3686.741 ops/ms
Base64EncodeToString.testEncodeToString:gc.alloc.rate 100 thrpt 10 9497.667 ± 618.182 MB/sec
Base64EncodeToString.testEncodeToString:gc.alloc.rate.norm 100 thrpt 10 176.000 ± 0.001 B/op
Base64EncodeToString.testEncodeToString:gc.count 100 thrpt 10 173.000 counts
Base64EncodeToString.testEncodeToString:gc.time 100 thrpt 10 122.000 ms
Base64EncodeToString.testEncodeToString 1000 thrpt 10 10738.733 ± 1765.562 ops/ms
Base64EncodeToString.testEncodeToString:gc.alloc.rate 1000 thrpt 10 14090.662 ± 2316.935 MB/sec
Base64EncodeToString.testEncodeToString:gc.alloc.rate.norm 1000 thrpt 10 1376.000 ± 0.001 B/op
Base64EncodeToString.testEncodeToString:gc.count 1000 thrpt 10 200.000 counts
Base64EncodeToString.testEncodeToString:gc.time 1000 thrpt 10 150.000 ms
Base64EncodeToString.testEncodeToString 10000 thrpt 10 940.693 ± 91.054 ops/ms
Base64EncodeToString.testEncodeToString:gc.alloc.rate 10000 thrpt 10 11998.463 ± 1161.641 MB/sec
Base64EncodeToString.testEncodeToString:gc.alloc.rate.norm 10000 thrpt 10 13376.004 ± 0.001 B/op
Base64EncodeToString.testEncodeToString:gc.count 10000 thrpt 10 158.000 counts
Base64EncodeToString.testEncodeToString:gc.time 10000 thrpt 10 136.000 ms
-------------
PR Comment: https://git.openjdk.org/jdk/pull/29920#issuecomment-3970052161
More information about the core-libs-dev
mailing list