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