On Tue, 3 Aug 2021 13:33:07 GMT, Wang Huang <whu...@openjdk.org> wrote:

>> Dear all, 
>>     Can you do me a favor to review this patch. This patch use `ldp` to 
>> implement String.compareTo.
>>    
>> * We add a JMH test case 
>> * Here is the result of this test case
>>  
>> Benchmark                           |(size)| Mode| Cnt|Score | Error  |Units 
>> ---------------------------------|------|-----|----|------|--------|-----
>> StringCompare.compareLL       |  64  | avgt| 5  |7.992 | ±   0.005|us/op
>> StringCompare.compareLL       |  72  | avgt| 5  |15.029| ±   0.006|us/op
>> StringCompare.compareLL       |  80  | avgt| 5  |14.655| ±   0.011|us/op
>> StringCompare.compareLL       |  91  | avgt| 5  |16.363| ±   0.12 |us/op
>> StringCompare.compareLL       |  101 | avgt| 5  |16.966| ±   0.007|us/op
>> StringCompare.compareLL       |  121 | avgt| 5  |19.276| ±   0.006|us/op
>> StringCompare.compareLL       |  181 | avgt| 5  |19.002| ±   0.417|us/op
>> StringCompare.compareLL       |  256 | avgt| 5  |24.707| ±   0.041|us/op
>> StringCompare.compareLLWithLdp|  64  | avgt| 5  |8.001       | ±     
>> 0.121|us/op
>> StringCompare.compareLLWithLdp|  72  | avgt| 5  |11.573| ±   0.003|us/op
>> StringCompare.compareLLWithLdp|  80  | avgt| 5  |6.861 | ±   0.004|us/op
>> StringCompare.compareLLWithLdp|  91  | avgt| 5  |12.774| ±   0.201|us/op
>> StringCompare.compareLLWithLdp|  101 | avgt| 5  |8.691 | ±   0.004|us/op
>> StringCompare.compareLLWithLdp|  121 | avgt| 5  |11.091| ±   1.342|us/op
>> StringCompare.compareLLWithLdp|  181 | avgt| 5  |14.64 | ±   0.581|us/op
>> StringCompare.compareLLWithLdp|  256 | avgt| 5  |25.879| ±   1.775|us/op
>> StringCompare.compareUU       |  64  | avgt| 5  |13.476| ±   0.01 |us/op
>> StringCompare.compareUU       |  72  | avgt| 5  |15.078| ±   0.006|us/op
>> StringCompare.compareUU       |  80  | avgt| 5  |23.512| ±   0.011|us/op
>> StringCompare.compareUU       |  91  | avgt| 5  |24.284| ±   0.008|us/op
>> StringCompare.compareUU       |  101 | avgt| 5  |20.707| ±   0.017|us/op
>> StringCompare.compareUU       |  121 | avgt| 5  |29.302| ±   0.011|us/op
>> StringCompare.compareUU       |  181 | avgt| 5  |39.31       | ±     
>> 0.016|us/op
>> StringCompare.compareUU       |  256 | avgt| 5  |54.592| ±   0.392|us/op
>> StringCompare.compareUUWithLdp|  64  | avgt| 5  |16.389| ±   0.008|us/op
>> StringCompare.compareUUWithLdp|  72  | avgt| 5  |10.71 | ±   0.158|us/op
>> StringCompare.compareUUWithLdp|  80  | avgt| 5  |11.488| ±   0.024|us/op
>> StringCompare.compareUUWithLdp|  91  | avgt| 5  |13.412| ±   0.006|us/op
>> StringCompare.compareUUWithLdp|  101 | avgt| 5  |16.245| ±   0.434|us/op
>> StringCompare.compareUUWithLdp|  121 | avgt| 5  |16.597| ±   0.016|us/op
>> StringCompare.compareUUWithLdp|  181 | avgt| 5  |27.373| ±   0.017|us/op
>> StringCompare.compareUUWithLdp|  256 | avgt| 5  |41.74 | ±   3.5      |us/op
>> 
>> From this table, we can see that in most cases, our patch is better than old 
>> one.
>> 
>> Thank you for your review. Any suggestions are welcome.
>
> Wang Huang has updated the pull request with a new target base due to a merge 
> or a rebase. The incremental webrev excludes the unrelated changes brought in 
> by the merge/rebase. The pull request contains six additional commits since 
> the last revision:
> 
>  - fix bugs
>  - Merge branch 'master' of https://gitee.com/ustc-wh/jdk into JDK-8268231
>  - fix style and add unalign test case
>  - refact codes
>  - draft of refactor
>  - 8268231: Aarch64: Use ldp in intrinsics for String.compareTo

We also tested this version on Hisilicon, increasing the count of each test and 
the length of the string because the test data fluctuates more. When diff_pos 
is greater than 255, the improvement will be more obvious. And in all cases 
there was no significant decline.


base:
Benchmark                                     (diff_pos)  (size)  Mode  Cnt   
Score   Error  Units
StringCompare.compareLLDiffStrings                     7     512  avgt   50   
5.481 ? 1.230  us/op
StringCompare.compareLLDiffStrings                    31     512  avgt   50   
6.944 ? 0.962  us/op
StringCompare.compareLLDiffStrings                    63     512  avgt   50  
10.129 ? 0.973  us/op
StringCompare.compareLLDiffStrings                   127     512  avgt   50  
15.944 ? 0.786  us/op
StringCompare.compareLLDiffStrings                   255     512  avgt   50  
28.233 ? 0.737  us/op
StringCompare.compareLLDiffStrings                   511     512  avgt   50  
51.612 ? 1.357  us/op
StringCompare.compareUUDiffStrings                     7     512  avgt   50   
5.552 ? 0.809  us/op
StringCompare.compareUUDiffStrings                    31     512  avgt   50  
12.024 ? 1.499  us/op
StringCompare.compareUUDiffStrings                    63     512  avgt   50  
15.368 ? 0.009  us/op
StringCompare.compareUUDiffStrings                   127     512  avgt   50  
28.354 ? 0.655  us/op
StringCompare.compareUUDiffStrings                   255     512  avgt   50  
52.932 ? 0.598  us/op
StringCompare.compareUUDiffStrings                   511     512  avgt   50  
99.377 ? 1.194  us/op
StringCompare.compareUUDiffStringsTurnOffCCP           7     512  avgt   50   
5.599 ? 0.801  us/op
StringCompare.compareUUDiffStringsTurnOffCCP          31     512  avgt   50  
10.200 ? 1.206  us/op
StringCompare.compareUUDiffStringsTurnOffCCP          63     512  avgt   50  
15.897 ? 0.783  us/op
StringCompare.compareUUDiffStringsTurnOffCCP         127     512  avgt   50  
28.420 ? 0.818  us/op
StringCompare.compareUUDiffStringsTurnOffCCP         255     512  avgt   50  
53.377 ? 1.049  us/op
StringCompare.compareUUDiffStringsTurnOffCCP         511     512  avgt   50  
98.362 ? 0.889  us/op

opt:
Benchmark                                     (diff_pos)  (size)  Mode  Cnt   
Score   Error  Units
StringCompare.compareLLDiffStrings                     7     512  avgt   50   
6.338 ? 1.513  us/op
StringCompare.compareLLDiffStrings                    31     512  avgt   50   
6.734 ? 0.789  us/op
StringCompare.compareLLDiffStrings                    63     512  avgt   50   
9.799 ? 1.757  us/op
StringCompare.compareLLDiffStrings                   127     512  avgt   50  
13.954 ? 1.688  us/op
StringCompare.compareLLDiffStrings                   255     512  avgt   50  
19.128 ? 1.024  us/op
StringCompare.compareLLDiffStrings                   511     512  avgt   50  
38.108 ? 1.595  us/op
StringCompare.compareUUDiffStrings                     7     512  avgt   50   
7.327 ? 1.376  us/op
StringCompare.compareUUDiffStrings                    31     512  avgt   50   
8.969 ? 1.311  us/op
StringCompare.compareUUDiffStrings                    63     512  avgt   50  
13.482 ? 1.623  us/op
StringCompare.compareUUDiffStrings                   127     512  avgt   50  
20.602 ? 1.495  us/op
StringCompare.compareUUDiffStrings                   255     512  avgt   50  
37.906 ? 3.763  us/op
StringCompare.compareUUDiffStrings                   511     512  avgt   50  
72.682 ? 6.374  us/op
StringCompare.compareUUDiffStringsTurnOffCCP           7     512  avgt   50   
6.638 ? 1.279  us/op
StringCompare.compareUUDiffStringsTurnOffCCP          31     512  avgt   50   
8.044 ? 0.924  us/op
StringCompare.compareUUDiffStringsTurnOffCCP          63     512  avgt   50  
12.921 ? 1.540  us/op
StringCompare.compareUUDiffStringsTurnOffCCP         127     512  avgt   50  
19.010 ? 1.333  us/op
StringCompare.compareUUDiffStringsTurnOffCCP         255     512  avgt   50  
36.326 ? 1.302  us/op
StringCompare.compareUUDiffStringsTurnOffCCP         511     512  avgt   50  
75.746 ? 3.786  us/op

-------------

PR: https://git.openjdk.java.net/jdk/pull/4722

Reply via email to