RFR: 8334554: RISC-V: verify & fix perf of string comparison
Fei Yang
fyang at openjdk.org
Tue Jun 25 06:04:14 UTC 2024
On Mon, 24 Jun 2024 14:47:24 GMT, Hamlin Li <mli at openjdk.org> wrote:
>> This is not a good news for us (riscv), as we need to adjust the lmul for specific intrinsic, I'm not sure if different boards with same vector length will have different preferences on the selection of lmul value.
>
> Seem it gains benefit on compareToUU, but introduces regression on compareToLL.
> Seems the `Error` column is huge for tests `compareToLL`.
I think the reason is not enough warmup. Increasing the warmup iterations to 10, I have:
Before:
Benchmark (delta) (size) Mode Cnt Score Error Units
StringCompareToDifferentLength.compareToLL 2 24 avgt 9 4130.834 ± 32.876 us/op
StringCompareToDifferentLength.compareToLL 2 36 avgt 9 4194.660 ± 50.024 us/op
StringCompareToDifferentLength.compareToLL 2 72 avgt 9 5632.843 ± 39.958 us/op
StringCompareToDifferentLength.compareToLL 2 128 avgt 9 5537.939 ± 102.826 us/op
StringCompareToDifferentLength.compareToLL 2 256 avgt 9 8410.254 ± 48.978 us/op
StringCompareToDifferentLength.compareToLL 2 512 avgt 9 14190.077 ± 58.298 us/op
StringCompareToDifferentLength.compareToLU 2 24 avgt 9 4746.320 ± 26.752 us/op
StringCompareToDifferentLength.compareToLU 2 36 avgt 9 4745.934 ± 29.010 us/op
StringCompareToDifferentLength.compareToLU 2 72 avgt 9 7010.726 ± 34.604 us/op
StringCompareToDifferentLength.compareToLU 2 128 avgt 9 6932.810 ± 116.194 us/op
StringCompareToDifferentLength.compareToLU 2 256 avgt 9 11299.320 ± 71.107 us/op
StringCompareToDifferentLength.compareToLU 2 512 avgt 9 20284.136 ± 518.531 us/op
StringCompareToDifferentLength.compareToUL 2 24 avgt 9 4909.746 ± 62.347 us/op
StringCompareToDifferentLength.compareToUL 2 36 avgt 9 4931.501 ± 21.065 us/op
StringCompareToDifferentLength.compareToUL 2 72 avgt 9 7120.069 ± 121.244 us/op
StringCompareToDifferentLength.compareToUL 2 128 avgt 9 7082.143 ± 37.576 us/op
StringCompareToDifferentLength.compareToUL 2 256 avgt 9 11519.615 ± 159.860 us/op
StringCompareToDifferentLength.compareToUL 2 512 avgt 9 20657.453 ± 366.615 us/op
StringCompareToDifferentLength.compareToUU 2 24 avgt 9 4239.266 ± 18.867 us/op
StringCompareToDifferentLength.compareToUU 2 36 avgt 9 5809.216 ± 32.901 us/op
StringCompareToDifferentLength.compareToUU 2 72 avgt 9 7388.057 ± 49.952 us/op
StringCompareToDifferentLength.compareToUU 2 128 avgt 9 9027.548 ± 45.262 us/op
StringCompareToDifferentLength.compareToUU 2 256 avgt 9 15462.502 ± 352.451 us/op
StringCompareToDifferentLength.compareToUU 2 512 avgt 9 27770.511 ± 54.271 us/op
After:
Benchmark (delta) (size) Mode Cnt Score Error Units
StringCompareToDifferentLength.compareToLL 2 24 avgt 9 4738.613 ± 49.649 us/op
StringCompareToDifferentLength.compareToLL 2 36 avgt 9 4791.263 ± 53.077 us/op
StringCompareToDifferentLength.compareToLL 2 72 avgt 9 4746.750 ± 30.957 us/op
StringCompareToDifferentLength.compareToLL 2 128 avgt 9 4745.569 ± 304.559 us/op
StringCompareToDifferentLength.compareToLL 2 256 avgt 9 6770.867 ± 66.414 us/op
StringCompareToDifferentLength.compareToLL 2 512 avgt 9 10931.753 ± 41.275 us/op
StringCompareToDifferentLength.compareToLU 2 24 avgt 9 4747.007 ± 32.605 us/op
StringCompareToDifferentLength.compareToLU 2 36 avgt 9 4742.046 ± 23.564 us/op
StringCompareToDifferentLength.compareToLU 2 72 avgt 9 7013.791 ± 29.773 us/op
StringCompareToDifferentLength.compareToLU 2 128 avgt 9 6935.089 ± 108.664 us/op
StringCompareToDifferentLength.compareToLU 2 256 avgt 9 11467.796 ± 228.432 us/op
StringCompareToDifferentLength.compareToLU 2 512 avgt 9 20280.133 ± 418.872 us/op
StringCompareToDifferentLength.compareToUL 2 24 avgt 9 4918.766 ± 49.456 us/op
StringCompareToDifferentLength.compareToUL 2 36 avgt 9 4927.695 ± 24.751 us/op
StringCompareToDifferentLength.compareToUL 2 72 avgt 9 7159.904 ± 108.044 us/op
StringCompareToDifferentLength.compareToUL 2 128 avgt 9 7097.520 ± 65.679 us/op
StringCompareToDifferentLength.compareToUL 2 256 avgt 9 11734.633 ± 50.276 us/op
StringCompareToDifferentLength.compareToUL 2 512 avgt 9 20435.038 ± 434.568 us/op
StringCompareToDifferentLength.compareToUU 2 24 avgt 9 4864.055 ± 24.130 us/op
StringCompareToDifferentLength.compareToUU 2 36 avgt 9 4864.965 ± 28.073 us/op
StringCompareToDifferentLength.compareToUU 2 72 avgt 9 7079.590 ± 65.721 us/op
StringCompareToDifferentLength.compareToUU 2 128 avgt 9 7260.679 ± 40.380 us/op
StringCompareToDifferentLength.compareToUU 2 256 avgt 9 11482.104 ± 41.789 us/op
StringCompareToDifferentLength.compareToUU 2 512 avgt 9 20338.735 ± 251.997 us/op
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/19825#discussion_r1652032779
More information about the hotspot-compiler-dev
mailing list