RFR: 8348870: Optimization for DecimalDigits

Shaojin Wen swen at openjdk.org
Tue Jan 28 15:13:56 UTC 2025


On Tue, 28 Jan 2025 14:49:45 GMT, Shaojin Wen <swen at openjdk.org> wrote:

> Expand DIGITS length to 128 and eliminate array bounds checking by using & 0x7F when accessing DIGITS

This minor change achieves a ~3-5% performance improvement on MacBook M1 Pro.


## 1. Script

git remote add wenshao git at github.com:wenshao/jdk.git
git fetch wenshao

#baseline
git checkout 2bef5b4a877f4d3bc766558b8782b7b57dee79a8
make test TEST="micro:java.lang.StringBuilders.appendWithLong"
make test TEST="micro:java.lang.StringBuilders.appendWithInt"

# current
git checkout 2bd9f306bdfb6b3a6082bece69bfe7f7c029d289
make test TEST="micro:java.lang.StringBuilders.appendWithLong"
make test TEST="micro:java.lang.StringBuilders.appendWithInt"


## 2. The performance numbers under MacBook M1 Pro

-# baseline
-Benchmark                            Mode  Cnt    Score   Error  Units (2bef5b4a877)
-StringBuilders.appendWithLongLatin1  avgt   15  203.001 ? 0.369  ns/op
-StringBuilders.appendWithLongUtf16   avgt   15  225.749 ? 2.675  ns/op
-StringBuilders.appendWithIntLatin1   avgt   15  137.246 ? 1.220  ns/op
-StringBuilders.appendWithIntUtf16    avgt   15  154.522 ? 0.889  ns/op


+# current
+Benchmark                            Mode  Cnt    Score   Error  Units
+StringBuilders.appendWithLongLatin1  avgt   15  191.743 ? 0.700  ns/op +5.87%
+StringBuilders.appendWithLongUtf16   avgt   15  218.538 ? 2.553  ns/op +3.29%
+StringBuilders.appendWithIntLatin1   avgt   15  132.107 ? 0.509  ns/op +3.89%
+StringBuilders.appendWithIntUtf16    avgt   15  149.093 ? 2.551  ns/op +3.64%

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

PR Comment: https://git.openjdk.org/jdk/pull/23335#issuecomment-2619265149


More information about the core-libs-dev mailing list