RFR: 8309502: RISC-V: String.indexOf intrinsic may produce misaligned memory loads [v7]
Vladimir Kempik
vkempik at openjdk.org
Tue Jun 13 21:32:12 UTC 2023
On Tue, 13 Jun 2023 12:57:38 GMT, Vladimir Kempik <vkempik at openjdk.org> wrote:
>> Please review this attempt to remove misaligned loads in String.indexOf intrinsic on RISC-V
>>
>> Initialy found these misaligned loads when profiling finagle-http test from renaissance suite.
>> The majority of trp_lam events (about 66k per finagle-http round) came at line 706 (https://github.com/openjdk/jdk/pull/14320/files#diff-35eb1d2f1e2f0514dd46bd7fbad49ff2c87703d5a3041a6433956df00a3fe6e6L706)
>> The other two produced about 100 events combined.
>> Later I've found this can partially be reproduced with StringIndexOf.advancedWithMediumSub.
>> Numbers on hifive before and after applying the patch:
>>
>>
>> Benchmark Mode Cnt Score Error Units
>> StringIndexOf.advancedWithMediumSub avgt 25 47031.406 ± 144.005 ns/op
>>
>>
>> After:
>>
>> Benchmark Mode Cnt Score Error Units
>> StringIndexOf.advancedWithMediumSub avgt 25 4256.830 ± 23.075 ns/op
>>
>>
>> Testing: tier1/tier2 is clean on hifive.
>
> Vladimir Kempik has updated the pull request incrementally with one additional commit since the last revision:
>
> fix nits
jmh results, StringIndexOf
advancedWithShortSubXChars - three new tests which test speed of linear search with needle of size X
before:
Benchmark (loops) (pathCnt) (rngSeed) Mode Cnt Score Error Units
StringIndexOf.advancedWithMediumSub N/A N/A N/A avgt 25 47184.829 ± 227.340 ns/op
StringIndexOf.advancedWithShortSub1 N/A N/A N/A avgt 25 4121.931 ± 194.659 ns/op
StringIndexOf.advancedWithShortSub2 N/A N/A N/A avgt 25 992.714 ± 24.638 ns/op
StringIndexOf.advancedWithShortSub2Chars N/A N/A N/A avgt 25 37315.528 ± 61.079 ns/op
StringIndexOf.advancedWithShortSub3Chars N/A N/A N/A avgt 25 37316.547 ± 26.079 ns/op
StringIndexOf.advancedWithShortSub4Chars N/A N/A N/A avgt 25 69367.409 ± 117.164 ns/op
StringIndexOf.constantPattern N/A N/A N/A avgt 25 73.671 ± 3.551 ns/op
StringIndexOf.searchChar16LongSuccess N/A N/A N/A avgt 25 251.513 ± 3.103 ns/op
StringIndexOf.searchChar16LongWithOffsetSuccess N/A N/A N/A avgt 25 258.523 ± 2.925 ns/op
StringIndexOf.searchChar16MediumSuccess N/A N/A N/A avgt 25 134.067 ± 3.635 ns/op
StringIndexOf.searchChar16MediumWithOffsetSuccess N/A N/A N/A avgt 25 146.327 ± 3.257 ns/op
StringIndexOf.searchChar16ShortSuccess N/A N/A N/A avgt 25 35.564 ± 2.468 ns/op
StringIndexOf.searchChar16ShortWithOffsetSuccess N/A N/A N/A avgt 25 40.607 ± 3.270 ns/op
StringIndexOf.searchCharLongSuccess N/A N/A N/A avgt 25 122.948 ± 4.485 ns/op
StringIndexOf.searchCharMediumSuccess N/A N/A N/A avgt 25 63.505 ± 2.645 ns/op
StringIndexOf.searchCharShortSuccess N/A N/A N/A avgt 25 33.107 ± 2.404 ns/op
StringIndexOf.searchString16LongLatinSuccess N/A N/A N/A avgt 25 504.675 ± 6.297 ns/op
StringIndexOf.searchString16LongSuccess N/A N/A N/A avgt 25 628.733 ± 3.652 ns/op
StringIndexOf.searchString16LongWithOffsetLatinSuccess N/A N/A N/A avgt 25 325.615 ± 3.355 ns/op
StringIndexOf.searchString16LongWithOffsetSuccess N/A N/A N/A avgt 25 343.145 ± 3.068 ns/op
StringIndexOf.searchString16MediumLatinSuccess N/A N/A N/A avgt 25 226.349 ± 3.635 ns/op
StringIndexOf.searchString16MediumSuccess N/A N/A N/A avgt 25 279.963 ± 3.536 ns/op
StringIndexOf.searchString16MediumWithOffsetLatinSuccess N/A N/A N/A avgt 25 161.672 ± 3.024 ns/op
StringIndexOf.searchString16MediumWithOffsetSuccess N/A N/A N/A avgt 25 162.722 ± 3.598 ns/op
StringIndexOf.searchString16ShortLatinSuccess N/A N/A N/A avgt 25 322.307 ± 3.027 ns/op
StringIndexOf.searchString16ShortSuccess N/A N/A N/A avgt 25 55.243 ± 3.518 ns/op
StringIndexOf.searchString16ShortWithOffsetLatinSuccess N/A N/A N/A avgt 25 55.825 ± 2.582 ns/op
StringIndexOf.searchString16ShortWithOffsetSuccess N/A N/A N/A avgt 25 54.268 ± 3.709 ns/op
StringIndexOf.success N/A N/A N/A avgt 25 80.776 ± 2.500 ns/op
StringIndexOf.successBig N/A N/A N/A avgt 25 6283.167 ± 11.876 ns/op
StringIndexOfChar.latin1_AVX2_String 100000 1000 1999 avgt 25 206802.394 ± 598.649 ns/op
StringIndexOfChar.latin1_AVX2_char 100000 1000 1999 avgt 25 103587.559 ± 214.802 ns/op
StringIndexOfChar.latin1_SSE4_String 100000 1000 1999 avgt 25 121714.481 ± 118.594 ns/op
StringIndexOfChar.latin1_SSE4_char 100000 1000 1999 avgt 25 75014.737 ± 178.044 ns/op
StringIndexOfChar.latin1_Short_String 100000 1000 1999 avgt 25 116975.364 ± 90.326 ns/op
StringIndexOfChar.latin1_Short_char 100000 1000 1999 avgt 25 81844.387 ± 230.281 ns/op
StringIndexOfChar.latin1_mixed_String 100000 1000 1999 avgt 25 210860.343 ± 159.635 ns/op
StringIndexOfChar.latin1_mixed_char 100000 1000 1999 avgt 25 117095.518 ± 204.476 ns/op
StringIndexOfChar.utf16_AVX2_String 100000 1000 1999 avgt 25 100868.093 ± 136.887 ns/op
StringIndexOfChar.utf16_AVX2_char 100000 1000 1999 avgt 25 80257.944 ± 208.123 ns/op
StringIndexOfChar.utf16_SSE4_String 100000 1000 1999 avgt 25 74831.080 ± 284.069 ns/op
StringIndexOfChar.utf16_SSE4_char 100000 1000 1999 avgt 25 64963.525 ± 113.680 ns/op
StringIndexOfChar.utf16_Short_String 100000 1000 1999 avgt 25 72531.734 ± 209.899 ns/op
StringIndexOfChar.utf16_Short_char 100000 1000 1999 avgt 25 70835.907 ± 202.187 ns/op
StringIndexOfChar.utf16_mixed_String 100000 1000 1999 avgt 25 162457.612 ± 178.987 ns/op
StringIndexOfChar.utf16_mixed_char 100000 1000 1999 avgt 25 149974.738 ± 320.802 ns/op
Hifive, after:
Benchmark (loops) (pathCnt) (rngSeed) Mode Cnt Score Error Units
StringIndexOf.advancedWithMediumSub N/A N/A N/A avgt 25 4276.564 ± 39.149 ns/op
StringIndexOf.advancedWithShortSub1 N/A N/A N/A avgt 25 4149.350 ± 209.233 ns/op
StringIndexOf.advancedWithShortSub2 N/A N/A N/A avgt 25 1128.838 ± 20.157 ns/op
StringIndexOf.advancedWithShortSub2Chars N/A N/A N/A avgt 25 1277.692 ± 13.031 ns/op
StringIndexOf.advancedWithShortSub3Chars N/A N/A N/A avgt 25 1313.186 ± 9.654 ns/op
StringIndexOf.advancedWithShortSub4Chars N/A N/A N/A avgt 25 2488.046 ± 8.964 ns/op
StringIndexOf.constantPattern N/A N/A N/A avgt 25 79.567 ± 5.082 ns/op
StringIndexOf.searchChar16LongSuccess N/A N/A N/A avgt 25 251.484 ± 3.302 ns/op
StringIndexOf.searchChar16LongWithOffsetSuccess N/A N/A N/A avgt 25 256.214 ± 3.778 ns/op
StringIndexOf.searchChar16MediumSuccess N/A N/A N/A avgt 25 133.622 ± 3.497 ns/op
StringIndexOf.searchChar16MediumWithOffsetSuccess N/A N/A N/A avgt 25 139.377 ± 3.008 ns/op
StringIndexOf.searchChar16ShortSuccess N/A N/A N/A avgt 25 35.788 ± 2.936 ns/op
StringIndexOf.searchChar16ShortWithOffsetSuccess N/A N/A N/A avgt 25 37.000 ± 2.983 ns/op
StringIndexOf.searchCharLongSuccess N/A N/A N/A avgt 25 124.275 ± 4.894 ns/op
StringIndexOf.searchCharMediumSuccess N/A N/A N/A avgt 25 65.132 ± 3.882 ns/op
StringIndexOf.searchCharShortSuccess N/A N/A N/A avgt 25 35.020 ± 3.418 ns/op
StringIndexOf.searchString16LongLatinSuccess N/A N/A N/A avgt 25 595.135 ± 5.635 ns/op
StringIndexOf.searchString16LongSuccess N/A N/A N/A avgt 25 630.710 ± 3.627 ns/op
StringIndexOf.searchString16LongWithOffsetLatinSuccess N/A N/A N/A avgt 25 321.968 ± 3.086 ns/op
StringIndexOf.searchString16LongWithOffsetSuccess N/A N/A N/A avgt 25 344.868 ± 5.492 ns/op
StringIndexOf.searchString16MediumLatinSuccess N/A N/A N/A avgt 25 268.289 ± 7.435 ns/op
StringIndexOf.searchString16MediumSuccess N/A N/A N/A avgt 25 276.393 ± 3.831 ns/op
StringIndexOf.searchString16MediumWithOffsetLatinSuccess N/A N/A N/A avgt 25 161.604 ± 2.949 ns/op
StringIndexOf.searchString16MediumWithOffsetSuccess N/A N/A N/A avgt 25 166.575 ± 3.478 ns/op
StringIndexOf.searchString16ShortLatinSuccess N/A N/A N/A avgt 25 390.758 ± 5.794 ns/op
StringIndexOf.searchString16ShortSuccess N/A N/A N/A avgt 25 55.287 ± 4.530 ns/op
StringIndexOf.searchString16ShortWithOffsetLatinSuccess N/A N/A N/A avgt 25 48.239 ± 1.333 ns/op
StringIndexOf.searchString16ShortWithOffsetSuccess N/A N/A N/A avgt 25 51.657 ± 2.762 ns/op
StringIndexOf.success N/A N/A N/A avgt 25 83.580 ± 3.200 ns/op
StringIndexOf.successBig N/A N/A N/A avgt 25 6253.601 ± 13.245 ns/op
StringIndexOfChar.latin1_AVX2_String 100000 1000 1999 avgt 25 180259.333 ± 428.243 ns/op
StringIndexOfChar.latin1_AVX2_char 100000 1000 1999 avgt 25 103301.911 ± 157.780 ns/op
StringIndexOfChar.latin1_SSE4_String 100000 1000 1999 avgt 25 106739.090 ± 206.242 ns/op
StringIndexOfChar.latin1_SSE4_char 100000 1000 1999 avgt 25 75027.524 ± 208.941 ns/op
StringIndexOfChar.latin1_Short_String 100000 1000 1999 avgt 25 102724.833 ± 231.911 ns/op
StringIndexOfChar.latin1_Short_char 100000 1000 1999 avgt 25 81018.525 ± 138.541 ns/op
StringIndexOfChar.latin1_mixed_String 100000 1000 1999 avgt 25 184633.008 ± 209.443 ns/op
StringIndexOfChar.latin1_mixed_char 100000 1000 1999 avgt 25 116350.746 ± 298.832 ns/op
StringIndexOfChar.utf16_AVX2_String 100000 1000 1999 avgt 25 110819.605 ± 137.955 ns/op
StringIndexOfChar.utf16_AVX2_char 100000 1000 1999 avgt 25 79956.001 ± 254.436 ns/op
StringIndexOfChar.utf16_SSE4_String 100000 1000 1999 avgt 25 75500.341 ± 186.736 ns/op
StringIndexOfChar.utf16_SSE4_char 100000 1000 1999 avgt 25 64974.675 ± 211.639 ns/op
StringIndexOfChar.utf16_Short_String 100000 1000 1999 avgt 25 71304.026 ± 163.559 ns/op
StringIndexOfChar.utf16_Short_char 100000 1000 1999 avgt 25 70843.242 ± 173.108 ns/op
StringIndexOfChar.utf16_mixed_String 100000 1000 1999 avgt 25 191690.983 ± 301.041 ns/op
StringIndexOfChar.utf16_mixed_char 100000 1000 1999 avgt 25 149988.445 ± 175.224 ns/op
Thead, before:
Benchmark (loops) (pathCnt) (rngSeed) Mode Cnt Score Error Units
StringIndexOf.advancedWithMediumSub N/A N/A N/A avgt 25 2734.898 ± 61.540 ns/op
StringIndexOf.advancedWithShortSub1 N/A N/A N/A avgt 25 2440.471 ± 90.996 ns/op
StringIndexOf.advancedWithShortSub2 N/A N/A N/A avgt 25 722.081 ± 29.674 ns/op
StringIndexOf.advancedWithShortSub2Chars N/A N/A N/A avgt 25 679.410 ± 5.793 ns/op
StringIndexOf.advancedWithShortSub3Chars N/A N/A N/A avgt 25 875.206 ± 26.224 ns/op
StringIndexOf.advancedWithShortSub4Chars N/A N/A N/A avgt 25 747.692 ± 5.600 ns/op
StringIndexOf.constantPattern N/A N/A N/A avgt 25 69.154 ± 0.647 ns/op
StringIndexOf.searchChar16LongSuccess N/A N/A N/A avgt 25 172.494 ± 0.754 ns/op
StringIndexOf.searchChar16LongWithOffsetSuccess N/A N/A N/A avgt 25 177.181 ± 0.126 ns/op
StringIndexOf.searchChar16MediumSuccess N/A N/A N/A avgt 25 106.646 ± 1.143 ns/op
StringIndexOf.searchChar16MediumWithOffsetSuccess N/A N/A N/A avgt 25 109.219 ± 1.165 ns/op
StringIndexOf.searchChar16ShortSuccess N/A N/A N/A avgt 25 40.604 ± 0.316 ns/op
StringIndexOf.searchChar16ShortWithOffsetSuccess N/A N/A N/A avgt 25 40.440 ± 0.514 ns/op
StringIndexOf.searchCharLongSuccess N/A N/A N/A avgt 25 96.637 ± 0.335 ns/op
StringIndexOf.searchCharMediumSuccess N/A N/A N/A avgt 25 60.237 ± 1.648 ns/op
StringIndexOf.searchCharShortSuccess N/A N/A N/A avgt 25 37.428 ± 0.623 ns/op
StringIndexOf.searchString16LongLatinSuccess N/A N/A N/A avgt 25 277.862 ± 12.231 ns/op
StringIndexOf.searchString16LongSuccess N/A N/A N/A avgt 25 332.158 ± 0.254 ns/op
StringIndexOf.searchString16LongWithOffsetLatinSuccess N/A N/A N/A avgt 25 398.582 ± 0.380 ns/op
StringIndexOf.searchString16LongWithOffsetSuccess N/A N/A N/A avgt 25 422.520 ± 0.153 ns/op
StringIndexOf.searchString16MediumLatinSuccess N/A N/A N/A avgt 25 135.033 ± 2.969 ns/op
StringIndexOf.searchString16MediumSuccess N/A N/A N/A avgt 25 157.165 ± 0.459 ns/op
StringIndexOf.searchString16MediumWithOffsetLatinSuccess N/A N/A N/A avgt 25 178.419 ± 1.152 ns/op
StringIndexOf.searchString16MediumWithOffsetSuccess N/A N/A N/A avgt 25 189.184 ± 0.507 ns/op
StringIndexOf.searchString16ShortLatinSuccess N/A N/A N/A avgt 25 189.720 ± 5.050 ns/op
StringIndexOf.searchString16ShortSuccess N/A N/A N/A avgt 25 48.456 ± 0.015 ns/op
StringIndexOf.searchString16ShortWithOffsetLatinSuccess N/A N/A N/A avgt 25 41.523 ± 0.261 ns/op
StringIndexOf.searchString16ShortWithOffsetSuccess N/A N/A N/A avgt 25 44.079 ± 0.142 ns/op
StringIndexOf.success N/A N/A N/A avgt 25 56.303 ± 0.506 ns/op
StringIndexOf.successBig N/A N/A N/A avgt 25 240.224 ± 0.718 ns/op
StringIndexOfChar.latin1_AVX2_String 100000 1000 1999 avgt 25 151718.306 ± 697.735 ns/op
StringIndexOfChar.latin1_AVX2_char 100000 1000 1999 avgt 25 101266.052 ± 975.917 ns/op
StringIndexOfChar.latin1_SSE4_String 100000 1000 1999 avgt 25 101792.535 ± 341.851 ns/op
StringIndexOfChar.latin1_SSE4_char 100000 1000 1999 avgt 25 55309.860 ± 154.954 ns/op
StringIndexOfChar.latin1_Short_String 100000 1000 1999 avgt 25 94692.722 ± 413.354 ns/op
StringIndexOfChar.latin1_Short_char 100000 1000 1999 avgt 25 60527.606 ± 534.854 ns/op
StringIndexOfChar.latin1_mixed_String 100000 1000 1999 avgt 25 154694.070 ± 323.422 ns/op
StringIndexOfChar.latin1_mixed_char 100000 1000 1999 avgt 25 102887.596 ± 123.646 ns/op
StringIndexOfChar.utf16_AVX2_String 100000 1000 1999 avgt 25 102949.366 ± 2005.041 ns/op
StringIndexOfChar.utf16_AVX2_char 100000 1000 1999 avgt 25 57791.800 ± 104.712 ns/op
StringIndexOfChar.utf16_SSE4_String 100000 1000 1999 avgt 25 62716.138 ± 163.635 ns/op
StringIndexOfChar.utf16_SSE4_char 100000 1000 1999 avgt 25 46677.973 ± 161.807 ns/op
StringIndexOfChar.utf16_Short_String 100000 1000 1999 avgt 25 56375.027 ± 486.974 ns/op
StringIndexOfChar.utf16_Short_char 100000 1000 1999 avgt 25 50512.176 ± 383.844 ns/op
StringIndexOfChar.utf16_mixed_String 100000 1000 1999 avgt 25 145740.443 ± 484.267 ns/op
StringIndexOfChar.utf16_mixed_char 100000 1000 1999 avgt 25 127834.969 ± 130.643 ns/op
thead, after:
Benchmark (loops) (pathCnt) (rngSeed) Mode Cnt Score Error Units
StringIndexOf.advancedWithMediumSub N/A N/A N/A avgt 25 3377.943 ± 42.496 ns/op
StringIndexOf.advancedWithShortSub1 N/A N/A N/A avgt 25 2567.466 ± 57.557 ns/op
StringIndexOf.advancedWithShortSub2 N/A N/A N/A avgt 25 844.403 ± 6.488 ns/op
StringIndexOf.advancedWithShortSub2Chars N/A N/A N/A avgt 25 892.346 ± 11.231 ns/op
StringIndexOf.advancedWithShortSub3Chars N/A N/A N/A avgt 25 942.688 ± 19.306 ns/op
StringIndexOf.advancedWithShortSub4Chars N/A N/A N/A avgt 25 761.535 ± 20.112 ns/op
StringIndexOf.constantPattern N/A N/A N/A avgt 25 75.172 ± 0.294 ns/op
StringIndexOf.searchChar16LongSuccess N/A N/A N/A avgt 25 172.765 ± 1.537 ns/op
StringIndexOf.searchChar16LongWithOffsetSuccess N/A N/A N/A avgt 25 177.554 ± 0.515 ns/op
StringIndexOf.searchChar16MediumSuccess N/A N/A N/A avgt 25 105.234 ± 1.079 ns/op
StringIndexOf.searchChar16MediumWithOffsetSuccess N/A N/A N/A avgt 25 107.671 ± 1.415 ns/op
StringIndexOf.searchChar16ShortSuccess N/A N/A N/A avgt 25 40.933 ± 0.015 ns/op
StringIndexOf.searchChar16ShortWithOffsetSuccess N/A N/A N/A avgt 25 42.273 ± 2.262 ns/op
StringIndexOf.searchCharLongSuccess N/A N/A N/A avgt 25 99.018 ± 1.945 ns/op
StringIndexOf.searchCharMediumSuccess N/A N/A N/A avgt 25 62.872 ± 3.143 ns/op
StringIndexOf.searchCharShortSuccess N/A N/A N/A avgt 25 36.762 ± 0.029 ns/op
StringIndexOf.searchString16LongLatinSuccess N/A N/A N/A avgt 25 395.942 ± 0.239 ns/op
StringIndexOf.searchString16LongSuccess N/A N/A N/A avgt 25 328.769 ± 0.298 ns/op
StringIndexOf.searchString16LongWithOffsetLatinSuccess N/A N/A N/A avgt 25 312.369 ± 0.601 ns/op
StringIndexOf.searchString16LongWithOffsetSuccess N/A N/A N/A avgt 25 422.857 ± 0.483 ns/op
StringIndexOf.searchString16MediumLatinSuccess N/A N/A N/A avgt 25 175.366 ± 0.034 ns/op
StringIndexOf.searchString16MediumSuccess N/A N/A N/A avgt 25 153.542 ± 0.474 ns/op
StringIndexOf.searchString16MediumWithOffsetLatinSuccess N/A N/A N/A avgt 25 146.393 ± 0.080 ns/op
StringIndexOf.searchString16MediumWithOffsetSuccess N/A N/A N/A avgt 25 175.485 ± 12.868 ns/op
StringIndexOf.searchString16ShortLatinSuccess N/A N/A N/A avgt 25 253.175 ± 1.237 ns/op
StringIndexOf.searchString16ShortSuccess N/A N/A N/A avgt 25 46.278 ± 0.316 ns/op
StringIndexOf.searchString16ShortWithOffsetLatinSuccess N/A N/A N/A avgt 25 42.041 ± 0.566 ns/op
StringIndexOf.searchString16ShortWithOffsetSuccess N/A N/A N/A avgt 25 44.513 ± 0.976 ns/op
StringIndexOf.success N/A N/A N/A avgt 25 58.469 ± 0.017 ns/op
StringIndexOf.successBig N/A N/A N/A avgt 25 240.645 ± 0.649 ns/op
StringIndexOfChar.latin1_AVX2_String 100000 1000 1999 avgt 25 137297.837 ± 1618.438 ns/op
StringIndexOfChar.latin1_AVX2_char 100000 1000 1999 avgt 25 99919.463 ± 264.771 ns/op
StringIndexOfChar.latin1_SSE4_String 100000 1000 1999 avgt 25 93552.042 ± 412.514 ns/op
StringIndexOfChar.latin1_SSE4_char 100000 1000 1999 avgt 25 55130.042 ± 228.381 ns/op
StringIndexOfChar.latin1_Short_String 100000 1000 1999 avgt 25 93682.963 ± 448.951 ns/op
StringIndexOfChar.latin1_Short_char 100000 1000 1999 avgt 25 60450.415 ± 544.678 ns/op
StringIndexOfChar.latin1_mixed_String 100000 1000 1999 avgt 25 139723.661 ± 656.951 ns/op
StringIndexOfChar.latin1_mixed_char 100000 1000 1999 avgt 25 102253.415 ± 189.882 ns/op
StringIndexOfChar.utf16_AVX2_String 100000 1000 1999 avgt 25 101267.586 ± 437.666 ns/op
StringIndexOfChar.utf16_AVX2_char 100000 1000 1999 avgt 25 58385.242 ± 423.666 ns/op
StringIndexOfChar.utf16_SSE4_String 100000 1000 1999 avgt 25 61231.849 ± 111.539 ns/op
StringIndexOfChar.utf16_SSE4_char 100000 1000 1999 avgt 25 46524.978 ± 171.727 ns/op
StringIndexOfChar.utf16_Short_String 100000 1000 1999 avgt 25 56955.300 ± 115.976 ns/op
StringIndexOfChar.utf16_Short_char 100000 1000 1999 avgt 25 50042.089 ± 353.580 ns/op
StringIndexOfChar.utf16_mixed_String 100000 1000 1999 avgt 25 156943.226 ± 260.089 ns/op
StringIndexOfChar.utf16_mixed_char 100000 1000 1999 avgt 25 129073.240 ± 124.931 ns/op
-------------
PR Comment: https://git.openjdk.org/jdk/pull/14320#issuecomment-1590050223
More information about the hotspot-compiler-dev
mailing list