RFR(S): 8205194: Improve the Array Comparison when there is a mismatch at first element.

Paul Sandoz paul.sandoz at oracle.com
Wed Jun 20 21:29:33 UTC 2018


 459     public static int mismatch(float[] a, int aFromIndex,
 460                                float[] b, int bFromIndex,
 461                                int length) {
 462         int i = 0;
 463         if (length > 1) {
 464             if (a[aFromIndex] != b[bFromIndex]) {
 465                 i = 0;
 466             } else {

You fold the if/else to;

  if (a[aFromIndex] == b[bFromIndex]) {
  …
  }

same applies in other cases in both source files.


> On Jun 20, 2018, at 1:21 PM, Deshpande, Vivek R <vivek.r.deshpande at intel.com> wrote:
> 
> Hi All
>  
> I have updated the webrev with all the suggestions, which passes ArraysEqCmpTest.java.
> Earlier webrev failed the same test.

Thanks for confirming.

> This webrev also modifies the BufferMismatch.java in similar way.

Great!

Paul.

> Please take a look and let me know what you think.
>  
> Updated webrev is here:
> http://cr.openjdk.java.net/~vdeshpande/vectorizedMismatch_jdk/webrev.01/ <http://cr.openjdk.java.net/~vdeshpande/vectorizedMismatch_jdk/webrev.01/>
> I have also modified the bug with updated webrev.
> Regards,
> Vivek
>  
> From: Deshpande, Vivek R 
> Sent: Tuesday, June 19, 2018 10:57 AM
> To: Paul Sandoz <paul.sandoz at oracle.com <mailto:paul.sandoz at oracle.com>>; Roger.Riggs at oracle.com <mailto:Roger.Riggs at oracle.com>
> Cc: David Holmes <david.holmes at oracle.com <mailto:david.holmes at oracle.com>>; core-libs-dev at openjdk.java.net <mailto:core-libs-dev at openjdk.java.net>; Viswanathan, Sandhya <sandhya.viswanathan at intel.com <mailto:sandhya.viswanathan at intel.com>>
> Subject: RE: RFR(S): 8205194: Improve the Array Comparison when there is a mismatch at first element.
>  
> Hi Roger
>  
> I will also test with zero length arrays and let you know.
> Thanks for the input.
>  
> Regards,
> Vivek
>  
> From: Deshpande, Vivek R 
> Sent: Tuesday, June 19, 2018 10:17 AM
> To: 'Paul Sandoz' <paul.sandoz at oracle.com <mailto:paul.sandoz at oracle.com>>
> Cc: David Holmes <david.holmes at oracle.com <mailto:david.holmes at oracle.com>>; core-libs-dev at openjdk.java.net <mailto:core-libs-dev at openjdk.java.net>; Viswanathan, Sandhya <sandhya.viswanathan at intel.com <mailto:sandhya.viswanathan at intel.com>>
> Subject: RE: RFR(S): 8205194: Improve the Array Comparison when there is a mismatch at first element.
>  
> Thanks Paul for quick review. I will work on the things you have mentioned and get back soon.
> I will also test this with test/jdk/java/util/Arrays/ArraysEqCmpTest.java.
>  
> Regards,
> Vivek
>  
> From: Paul Sandoz [mailto:paul.sandoz at oracle.com <mailto:paul.sandoz at oracle.com>] 
> Sent: Tuesday, June 19, 2018 9:55 AM
> To: Deshpande, Vivek R <vivek.r.deshpande at intel.com <mailto:vivek.r.deshpande at intel.com>>
> Cc: David Holmes <david.holmes at oracle.com <mailto:david.holmes at oracle.com>>; core-libs-dev at openjdk.java.net <mailto:core-libs-dev at openjdk.java.net>; Viswanathan, Sandhya <sandhya.viswanathan at intel.com <mailto:sandhya.viswanathan at intel.com>>
> Subject: Re: RFR(S): 8205194: Improve the Array Comparison when there is a mismatch at first element.
>  
> Hi Vivek,
>  
> Thanks for investigating this.
>  
>  164     public static int mismatch(boolean[] a,
>  165                                boolean[] b,
>  166                                int length) {
>  167         int i = 0;
>  168         if (a[i] != b[i])
>  169             return i;
> You might as well replace the use if i with 0 and i think you can move this to be performed when the length is greater than the threshold, that way you don’t impact small arrays below the threshold.
>  
>  186     public static int mismatch(boolean[] a, int aFromIndex,
>  187                                boolean[] b, int bFromIndex,
>  188                                int length) {
>  189         int i = 0;
>  190         if (a[i] != b[i])
>  191             return i;
> This is incorrect. You need to use aFromIndex and bFromIndex.
>  
> Do you run the test test/jdk/java/util/Arrays/ArraysEqCmpTest.java? If that passed then we need to strengthen for the case of a mismatch on the first relative element in each array.
>  
> Paul.
>  
> 
> On Jun 19, 2018, at 9:36 AM, Deshpande, Vivek R <vivek.r.deshpande at intel.com <mailto:vivek.r.deshpande at intel.com>> wrote:
>  
> Thanks David.
> Sending it to core-libs-dev.
> 
> I would like to contribute a patch which improves the array comparison when there is a mismatch for the first element.
> This avoids call to vectorizedMismatch method and gives ~80x speed up.
> Could you please review and sponsor the patch.
> Link to bug:
> https://bugs.openjdk.java.net/browse/JDK-8205194 <https://bugs.openjdk.java.net/browse/JDK-8205194>
> webrev:
> http://cr.openjdk.java.net/~vdeshpande/vectorizedMismatch_jdk/webrev.00/ <http://cr.openjdk.java.net/~vdeshpande/vectorizedMismatch_jdk/webrev.00/>
> 
> Regards,
> Vivek
> 
> -----Original Message-----
> From: David Holmes [mailto:david.holmes at oracle.com <mailto:david.holmes at oracle.com>] 
> Sent: Monday, June 18, 2018 10:32 PM
> To: Deshpande, Vivek R <vivek.r.deshpande at intel.com <mailto:vivek.r.deshpande at intel.com>>; jdk-dev at openjdk.java.net <mailto:jdk-dev at openjdk.java.net>
> Subject: Re: RFR(S): 8205194: Improve the Array Comparison when there is a mismatch at first element.
> 
> Hi Vivek,
> 
> Reviews should take place on the appropriate mailing list for the code being changed, not on the jdk-dev list. Please takes this to core-libs-dev.
> 
> Thanks,
> David
> 
> On 19/06/2018 9:52 AM, Deshpande, Vivek R wrote:
> 
> Hi All
> 
> Forgot to add the links:
> https://bugs.openjdk.java.net/browse/JDK-8205194 <https://bugs.openjdk.java.net/browse/JDK-8205194>
> webrev:
> http://cr.openjdk.java.net/~vdeshpande/vectorizedMismatch_jdk/webrev.0 <http://cr.openjdk.java.net/~vdeshpande/vectorizedMismatch_jdk/webrev.0>
> 0/
> 
> Regards.
> Vivek
> 
> From: Deshpande, Vivek R
> Sent: Monday, June 18, 2018 4:50 PM
> To: 'jdk-dev at openjdk.java.net <mailto:jdk-dev at openjdk.java.net>' <jdk-dev at openjdk.java.net <mailto:jdk-dev at openjdk.java.net>>
> Cc: 'Paul Sandoz' <paul.sandoz at oracle.com <mailto:paul.sandoz at oracle.com>>; Viswanathan, Sandhya 
> <sandhya.viswanathan at intel.com <mailto:sandhya.viswanathan at intel.com>>
> Subject: RFR(S): 8205194: Improve the Array Comparison when there is a mismatch at first element.
> 
> Hi All
> 
> I would like to contribute a patch which improves the array comparison when there is a mismatch for the first element.
> This avoids call to vectorizedMismatch method and gives ~80x speed up.
> Please review and sponsor the patch.
> 
> Regards,
> Vivek
> 



More information about the core-libs-dev mailing list