On Wed, 29 Jan 2025 18:47:25 GMT, Johannes Graham <d...@openjdk.org> wrote:
>> Shaojin Wen has updated the pull request incrementally with one additional >> commit since the last revision: >> >> copyright > > src/java.base/share/classes/jdk/internal/util/DecimalDigits.java line 181: > >> 179: return -1; >> 180: } >> 181: return ((d & 0xF) << 3) + ((d & 0xF) << 1) // (d & 0xF) * 10 > > Is simply using `(d & 0xF) * 10` any worse? I expect the compiler knows this > trick and would use it when appropriate. The performance results are identical across x64 and AArch64 platforms. ## 1. Script git remote add wenshao g...@github.com:wenshao/jdk.git git fetch wenshao #baseline (shift) git checkout 0b04a70609b3195aca6481c6f1c88b27c872a65b make test TEST="micro:java.lang.Longs.parseLong" # current (muliti 10) git checkout a6d9846809d6213fd70e852773ff2f57b5bf0201 make test TEST="micro:java.lang.Longs.parseLong" ## 2. MacBook M1 Pro (aarch64) Benchmark (size) Mode Cnt Score Error Units (0b04a70609b) Longs.parseLong 500 avgt 15 2.237 ? 0.029 us/op Benchmark (size) Mode Cnt Score Error Units (a6d9846809d) Longs.parseLong 500 avgt 15 2.225 ? 0.021 us/op ## 3. aliyun_ecs_c8a_x64 (CPU AMD EPYC™ Genoa) Benchmark (size) Mode Cnt Score Error Units (0b04a70609b) Longs.parseLong 500 avgt 15 2.920 ± 0.018 us/op Benchmark (size) Mode Cnt Score Error Units (a6d9846809d) Longs.parseLong 500 avgt 15 2.912 ± 0.020 us/op ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/22919#discussion_r1935027236