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

Deshpande, Vivek R vivek.r.deshpande at intel.com
Thu Jun 21 00:05:55 UTC 2018


Hi Paul

I have made the change you have suggested.
Please find the updated webrev at this location:
http://cr.openjdk.java.net/~vdeshpande/vectorizedMismatch_jdk/webrev.02/

Regards,
Vivek
From: Paul Sandoz [mailto:paul.sandoz at oracle.com]
Sent: Wednesday, June 20, 2018 2:30 PM
To: Deshpande, Vivek R <vivek.r.deshpande at intel.com>
Cc: Roger.Riggs at oracle.com; David Holmes <david.holmes at oracle.com>; core-libs-dev at openjdk.java.net; Viswanathan, Sandhya <sandhya.viswanathan at intel.com>
Subject: Re: RFR(S): 8205194: Improve the Array Comparison when there is a mismatch at first element.

 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<mailto: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/
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]
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
webrev:
http://cr.openjdk.java.net/~vdeshpande/vectorizedMismatch_jdk/webrev.00/

Regards,
Vivek

-----Original Message-----
From: David Holmes [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
webrev:
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