RFR: 8362596: RISC-V: Improve _vectorizedHashCode intrinsic
Yuri Gaevsky
duke at openjdk.org
Mon Jul 21 08:13:25 UTC 2025
On Mon, 21 Jul 2025 08:07:48 GMT, Yuri Gaevsky <duke at openjdk.org> wrote:
> This is a micro-optimization for RISC-V SpacemiT K1 CPU to fix [encountered performance regression](https://github.com/openjdk/jdk/pull/17413#issuecomment-3082664335).
bpif3-16g% for i in "-XX:DisableIntrinsic=_vectorizedHashCode" "-XX:-UseRVV" "-XX:+UseRVV" ; \
do ( echo "--- ${i} ---" && ${JAVA_HOME}/bin/java -jar benchmarks.jar \
--jvmArgs="-XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions ${i}" \
org.openjdk.bench.java.lang.ArraysHashCode.ints \
-p size=1,5,10,20,30,40,50,60,70,80,90,100,200,300 \
-f 3 -r 1 -w 1 -wi 5 -i 10 2>&1 | tail -15 ) done
--- -XX:DisableIntrinsic=_vectorizedHashCode ---
Benchmark (size) Mode Cnt Score Error Units
ArraysHashCode.ints 1 avgt 30 11.280 ± 0.004 ns/op
ArraysHashCode.ints 5 avgt 30 28.831 ± 0.032 ns/op
ArraysHashCode.ints 10 avgt 30 41.179 ± 0.220 ns/op
ArraysHashCode.ints 20 avgt 30 68.178 ± 0.142 ns/op
ArraysHashCode.ints 30 avgt 30 88.911 ± 0.385 ns/op
ArraysHashCode.ints 40 avgt 30 115.043 ± 0.186 ns/op
ArraysHashCode.ints 50 avgt 30 135.755 ± 0.607 ns/op
ArraysHashCode.ints 60 avgt 30 161.924 ± 0.187 ns/op
ArraysHashCode.ints 70 avgt 30 170.367 ± 0.413 ns/op
ArraysHashCode.ints 80 avgt 30 193.985 ± 0.707 ns/op
ArraysHashCode.ints 90 avgt 30 207.633 ± 0.147 ns/op
ArraysHashCode.ints 100 avgt 30 232.362 ± 0.259 ns/op
ArraysHashCode.ints 200 avgt 30 447.390 ± 0.677 ns/op
ArraysHashCode.ints 300 avgt 30 656.324 ± 1.100 ns/op
--- -XX:-UseRVV ---
Benchmark (size) Mode Cnt Score Error Units
ArraysHashCode.ints 1 avgt 30 11.291 ± 0.017 ns/op
ArraysHashCode.ints 5 avgt 30 23.176 ± 0.011 ns/op
ArraysHashCode.ints 10 avgt 30 33.264 ± 0.073 ns/op
ArraysHashCode.ints 20 avgt 30 50.726 ± 0.006 ns/op
ArraysHashCode.ints 30 avgt 30 70.990 ± 0.184 ns/op
ArraysHashCode.ints 40 avgt 30 88.368 ± 0.050 ns/op
ArraysHashCode.ints 50 avgt 30 108.582 ± 0.175 ns/op
ArraysHashCode.ints 60 avgt 30 126.084 ± 0.202 ns/op
ArraysHashCode.ints 70 avgt 30 146.201 ± 0.169 ns/op
ArraysHashCode.ints 80 avgt 30 163.469 ± 0.033 ns/op
ArraysHashCode.ints 90 avgt 30 183.653 ± 0.182 ns/op
ArraysHashCode.ints 100 avgt 30 201.063 ± 0.156 ns/op
ArraysHashCode.ints 200 avgt 30 389.657 ± 0.752 ns/op
ArraysHashCode.ints 300 avgt 30 577.283 ± 0.434 ns/op
--- -XX:+UseRVV ---
Benchmark (size) Mode Cnt Score Error Units
ArraysHashCode.ints 1 avgt 30 11.273 ± 0.001 ns/op
ArraysHashCode.ints 5 avgt 30 23.184 ± 0.010 ns/op
ArraysHashCode.ints 10 avgt 30 33.262 ± 0.086 ns/op
ArraysHashCode.ints 20 avgt 30 50.811 ± 0.078 ns/op
ArraysHashCode.ints 30 avgt 30 71.019 ± 0.164 ns/op
ArraysHashCode.ints 40 avgt 30 88.331 ± 0.096 ns/op
ArraysHashCode.ints 50 avgt 30 108.852 ± 0.212 ns/op
ArraysHashCode.ints 60 avgt 30 125.948 ± 0.039 ns/op
ArraysHashCode.ints 70 avgt 30 146.518 ± 0.345 ns/op
ArraysHashCode.ints 80 avgt 30 163.464 ± 0.029 ns/op
ArraysHashCode.ints 90 avgt 30 183.722 ± 0.237 ns/op
ArraysHashCode.ints 100 avgt 30 201.307 ± 0.346 ns/op
ArraysHashCode.ints 200 avgt 30 389.048 ± 0.322 ns/op
ArraysHashCode.ints 300 avgt 30 576.821 ± 0.130 ns/op
-------------
PR Comment: https://git.openjdk.org/jdk/pull/26409#issuecomment-3095669754
More information about the hotspot-compiler-dev
mailing list