On Tue, 28 May 2024 20:40:30 GMT, Claes Redestad <redes...@openjdk.org> wrote:
>> src/java.base/share/classes/jdk/internal/util/ArraysSupport.java line 275: >> >>> 273: return switch (length) { >>> 274: case 0 -> initialValue; >>> 275: case 1 -> 31 * initialValue + (a[fromIndex] & 0xff); >> >> For clarity, if you think it helps: >> Suggestion: >> >> case 1 -> 31 * initialValue + Byte.toUnsignedInt(a[fromIndex]); > > I don't care as long as microbenchmarks don't get a hiccup. @cl4es, here are some results from my machine (macosx-aarch64): Name (size) Cnt Base Error Test Error Unit Change ArraysHashCode.bytes 1 15 0.715 ± 0.004 0.725 ± 0.029 ns/op 0.99x (p = 0.182 ) ArraysHashCode.bytes 10 15 3.753 ± 0.024 3.747 ± 0.011 ns/op 1.00x (p = 0.322 ) ArraysHashCode.bytes 100 15 69.731 ± 0.157 69.737 ± 0.092 ns/op 1.00x (p = 0.891 ) ArraysHashCode.bytes 10000 15 9369.386 ± 1.449 9372.008 ± 6.678 ns/op 1.00x (p = 0.133 ) ArraysHashCode.chars 1 15 0.719 ± 0.024 0.734 ± 0.024 ns/op 0.98x (p = 0.076 ) ArraysHashCode.chars 10 15 3.744 ± 0.005 3.746 ± 0.004 ns/op 1.00x (p = 0.308 ) ArraysHashCode.chars 100 15 69.741 ± 0.112 69.714 ± 0.044 ns/op 1.00x (p = 0.365 ) ArraysHashCode.chars 10000 15 9367.123 ± 5.320 9371.325 ± 6.407 ns/op 1.00x (p = 0.046 ) ArraysHashCode.ints 1 15 0.711 ± 0.013 0.706 ± 0.006 ns/op 1.01x (p = 0.137 ) ArraysHashCode.ints 10 15 3.750 ± 0.002 3.752 ± 0.004 ns/op 1.00x (p = 0.283 ) ArraysHashCode.ints 100 15 69.753 ± 0.086 69.711 ± 0.016 ns/op 1.00x (p = 0.065 ) ArraysHashCode.ints 10000 15 9376.225 ± 5.845 9376.218 ± 12.181 ns/op 1.00x (p = 0.999 ) ArraysHashCode.multibytes 1 15 0.741 ± 0.001 0.740 ± 0.001 ns/op 1.00x (p = 0.038 ) ArraysHashCode.multibytes 10 15 2.737 ± 0.001 2.826 ± 0.136 ns/op 0.97x (p = 0.017 ) ArraysHashCode.multibytes 100 15 32.202 ± 0.059 32.153 ± 0.006 ns/op 1.00x (p = 0.004*) ArraysHashCode.multibytes 10000 15 4922.740 ± 25.590 4921.468 ± 7.372 ns/op 1.00x (p = 0.846 ) ArraysHashCode.multichars 1 15 0.740 ± 0.005 0.740 ± 0.000 ns/op 1.00x (p = 0.996 ) ArraysHashCode.multichars 10 15 2.732 ± 0.002 2.737 ± 0.003 ns/op 1.00x (p = 0.000*) ArraysHashCode.multichars 100 15 32.109 ± 0.017 32.182 ± 0.028 ns/op 1.00x (p = 0.000*) ArraysHashCode.multichars 10000 15 4925.750 ± 46.366 4930.684 ± 26.001 ns/op 1.00x (p = 0.704 ) ArraysHashCode.multiints 1 15 0.740 ± 0.000 0.739 ± 0.000 ns/op 1.00x (p = 0.000*) ArraysHashCode.multiints 10 15 2.919 ± 0.002 2.953 ± 0.059 ns/op 0.99x (p = 0.033 ) ArraysHashCode.multiints 100 15 32.140 ± 0.011 32.094 ± 0.004 ns/op 1.00x (p = 0.000*) ArraysHashCode.multiints 10000 15 4918.911 ± 3.512 4913.884 ± 11.618 ns/op 1.00x (p = 0.105 ) ArraysHashCode.multishorts 1 15 0.740 ± 0.001 0.739 ± 0.000 ns/op 1.00x (p = 0.000*) ArraysHashCode.multishorts 10 15 2.736 ± 0.002 2.733 ± 0.008 ns/op 1.00x (p = 0.159 ) ArraysHashCode.multishorts 100 15 32.162 ± 0.033 32.105 ± 0.008 ns/op 1.00x (p = 0.000*) ArraysHashCode.multishorts 10000 15 4916.984 ± 3.276 4912.000 ± 11.479 ns/op 1.00x (p = 0.103 ) ArraysHashCode.shorts 1 15 0.711 ± 0.023 0.709 ± 0.016 ns/op 1.00x (p = 0.818 ) ArraysHashCode.shorts 10 15 3.745 ± 0.003 3.739 ± 0.010 ns/op 1.00x (p = 0.049 ) ArraysHashCode.shorts 100 15 69.725 ± 0.082 69.620 ± 0.051 ns/op 1.00x (p = 0.000*) ArraysHashCode.shorts 10000 15 9370.882 ± 8.306 9356.215 ± 3.996 ns/op 1.00x (p = 0.000*) * = significant ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/19414#discussion_r1618821363