RFR: 8315585: Optimization for decimal to string [v6]
Shaojin Wen
duke at openjdk.org
Fri Oct 13 23:53:03 UTC 2023
On Fri, 13 Oct 2023 17:01:11 GMT, Shaojin Wen <duke at openjdk.org> wrote:
>> I submitted PR #15555 before, and there were too many changes. I split it into multiple PRs with small changes. This one is one of them.
>>
>> this PR removed the duplicate code for getChars in BigDecimal#StringBuilderHelper, i also make performance faster.
>> Please review and don't hesitate to critique my approach and patch.
>
> Shaojin Wen has updated the pull request incrementally with one additional commit since the last revision:
>
> use % calculate lowInt
Under linux OS and Intel Xeon Platinum 8475B, the performance of testSmallToEngineeringString becomes slower. It may be a better choice when using JLA.
## Alibaba Cloud Linux 3.2104 LTS 64 bit (Intel Xeon Platinum 8475B)
-Benchmark Mode Cnt Score Error Units (baseline)
-BigDecimals.testHugeToEngineeringString avgt 15 206.519 ? 1.574 ns/op
-BigDecimals.testLargeToEngineeringString avgt 15 35.830 ? 3.008 ns/op
-BigDecimals.testSmallToEngineeringString avgt 15 15.048 ? 0.033 ns/op
-BigDecimals.testToEngineeringString avgt 15 1738.627 ? 3.723 ns/op
+Benchmark Mode Cnt Score Error Units (88b1b13)
+BigDecimals.testHugeToEngineeringString avgt 15 179.174 ? 0.496 ns/op (+15.27)
+BigDecimals.testLargeToEngineeringString avgt 15 28.282 ? 0.050 ns/op (+26.69)
+BigDecimals.testSmallToEngineeringString avgt 15 17.106 ? 0.043 ns/op (-12.04)
+BigDecimals.testToEngineeringString avgt 15 1679.343 ? 6.285 ns/op (+3.54)
## MacBook M1 Pro
-Benchmark Mode Cnt Score Error Units (baseline)
-BigDecimals.testHugeToEngineeringString avgt 15 213.017 ? 24.056 ns/op
-BigDecimals.testLargeToEngineeringString avgt 15 58.025 ? 4.403 ns/op
-BigDecimals.testSmallToEngineeringString avgt 15 17.232 ? 0.484 ns/op
-BigDecimals.testToEngineeringString avgt 15 1767.594 ? 43.153 ns/op
+Benchmark Mode Cnt Score Error Units (88b1b13)
+BigDecimals.testHugeToEngineeringString avgt 15 149.861 ? 1.092 ns/op (+42.15)
+BigDecimals.testLargeToEngineeringString avgt 15 21.307 ? 0.062 ns/op (+172.33)
+BigDecimals.testSmallToEngineeringString avgt 15 16.875 ? 0.047 ns/op (+2.12)
+BigDecimals.testToEngineeringString avgt 15 1703.302 ? 44.969 ns/op (+3.78)
-------------
PR Comment: https://git.openjdk.org/jdk/pull/16006#issuecomment-1762382844
More information about the core-libs-dev
mailing list