On Tue, 7 Jan 2025 10:39:18 GMT, Shaojin Wen <s...@openjdk.org> wrote:
> In PR #22928, UUID introduced long-based vectorized hexadecimal to string > conversion, which can also be used in Integer::toHexString and > Long::toHexString to eliminate table lookups. The benefit of eliminating > table lookups is that the performance is better when cache misses occur. Performance test figures show that using the vectorized method toHex can improve performance in most cases by eliminating table lookups. ## 1. Script git remote add wenshao g...@github.com:wenshao/jdk.git git fetch wenshao # baseline git checkout 7731f4df6ba12b4e38f17f87bd42b1da6dc68f95 make test TEST="micro:java.lang.Integers.toHexString" make test TEST="micro:java.lang.Longs.toHexString" # current git checkout 6f491cedc2311115ab81b479620da3eb71385fc8 make test TEST="micro:java.lang.Integers.toHexString" make test TEST="micro:java.lang.Longs.toHexString" ## 2. aliyun_ecs_c8a_x64 (CPU AMD EPYC™ Genoa) -# 7731f4df6ba12b4e38f17f87bd42b1da6dc68f95 -Benchmark (size) Mode Cnt Score Error Units -Longs.toHexStringBig 500 avgt 15 5.984 ± 0.009 us/op -Longs.toHexStringSmall 500 avgt 15 3.989 ± 0.036 us/op -Integers.toHexStringBig 500 avgt 15 4.473 ± 0.029 us/op -Integers.toHexStringSmall 500 avgt 15 4.166 ± 0.120 us/op -Integers.toHexStringTiny 500 avgt 15 3.394 ± 0.014 us/op +# 6f491cedc2311115ab81b479620da3eb71385fc8 +Benchmark (size) Mode Cnt Score Error Units +Longs.toHexStringBig 500 avgt 15 4.622 ± 0.011 us/op +29% +Longs.toHexStringSmall 500 avgt 15 3.957 ± 0.035 us/op +0.8% +Integers.toHexStringBig 500 avgt 15 3.985 ± 0.019 us/op +12.24% +Integers.toHexStringSmall 500 avgt 15 3.617 ± 0.020 us/op +15.17% +Integers.toHexStringTiny 500 avgt 15 3.033 ± 0.015 us/op +11.90% ## 3. aliyun_ecs_c8i_x64 (CPU Intel®Xeon®Emerald Rapids) -# 7731f4df6ba12b4e38f17f87bd42b1da6dc68f95 -Benchmark (size) Mode Cnt Score Error Units -Longs.toHexStringBig 500 avgt 15 5.685 ± 0.019 us/op -Longs.toHexStringSmall 500 avgt 15 3.914 ± 0.009 us/op -Integers.toHexStringBig 500 avgt 15 4.262 ± 0.025 us/op -Integers.toHexStringSmall 500 avgt 15 4.049 ± 0.012 us/op -Integers.toHexStringTiny 500 avgt 15 3.323 ± 0.015 us/op +# 6f491cedc2311115ab81b479620da3eb71385fc8 +Benchmark (size) Mode Cnt Score Error Units +Longs.toHexStringBig 500 avgt 15 4.791 ± 0.005 us/op +Longs.toHexStringSmall 500 avgt 15 3.994 ± 0.022 us/op +Integers.toHexStringBig 500 avgt 15 4.184 ± 0.034 us/op +Integers.toHexStringSmall 500 avgt 15 3.771 ± 0.019 us/op +Integers.toHexStringTiny 500 avgt 15 3.133 ± 0.021 us/op ## 4. aliyun_ecs_c8y_aarch64 (CPU Aliyun Yitian 710) -# 7731f4df6ba12b4e38f17f87bd42b1da6dc68f95 -Benchmark (size) Mode Cnt Score Error Units -Longs.toHexStringBig 500 avgt 15 8.319 ± 0.139 us/op -Longs.toHexStringSmall 500 avgt 15 4.985 ± 0.028 us/op -Integers.toHexStringBig 500 avgt 15 5.489 ± 0.041 us/op -Integers.toHexStringSmall 500 avgt 15 5.028 ± 0.033 us/op -Integers.toHexStringTiny 500 avgt 15 3.921 ± 0.023 us/op +# 6f491cedc2311115ab81b479620da3eb71385fc8 +Benchmark (size) Mode Cnt Score Error Units +Longs.toHexStringBig 500 avgt 15 5.346 ± 0.033 us/op +Longs.toHexStringSmall 500 avgt 15 4.383 ± 0.027 us/op +Integers.toHexStringBig 500 avgt 15 4.821 ± 0.052 us/op +Integers.toHexStringSmall 500 avgt 15 4.428 ± 0.036 us/op +Integers.toHexStringTiny 500 avgt 15 3.800 ± 0.046 us/op ## 5. MacBook M1 Pro (aarch64) -# 7731f4df6ba12b4e38f17f87bd42b1da6dc68f95 -Benchmark (size) Mode Cnt Score Error Units -Longs.toHexStringBig 500 avgt 15 6.878 ± 0.230 us/op -Longs.toHexStringSmall 500 avgt 15 4.975 ± 0.381 us/op -Integers.toHexStringBig 500 avgt 15 11.646 ± 2.699 us/op -Integers.toHexStringSmall 500 avgt 15 5.040 ± 0.319 us/op -Integers.toHexStringTiny 500 avgt 15 2.717 ± 0.023 us/op +# 6f491cedc2311115ab81b479620da3eb71385fc8 +Benchmark (size) Mode Cnt Score Error Units +Longs.toHexStringBig 500 avgt 15 4.007 ± 0.023 us/op +Longs.toHexStringSmall 500 avgt 15 3.058 ± 0.024 us/op +Integers.toHexStringBig 500 avgt 15 3.399 ± 0.017 us/op +Integers.toHexStringSmall 500 avgt 15 3.163 ± 0.026 us/op +Integers.toHexStringTiny 500 avgt 15 2.909 ± 0.026 us/op ------------- PR Comment: https://git.openjdk.org/jdk/pull/22942#issuecomment-2970383406