pitrou opened a new pull request #8703:
URL: https://github.com/apache/arrow/pull/8703


   ArrayEquals now defers to ArrayRangeEquals under the hood.
   ArrayRangeEquals now allows passing an EqualOptions argument.
   Also add ArrayRangeApproxEquals.
   
   Comparison speed is massively improved on many input types:
   ```
                                         benchmark            baseline          
 contender   change %                                                           
                                                                                
                                    counters
   26               ArrayRangeEqualsStruct/32768/0    6.338m items/sec  
797.926m items/sec  12490.248                 {'run_name': 
'ArrayRangeEqualsStruct/32768/0', 'run_type': 'iteration', 'repetitions': 0, 
'repetition_index': 0, 'threads': 1, 'iterations': 135, 'null_percent': 0.0}
   16              ArrayRangeEqualsBoolean/32768/0  839.237m items/sec   
51.203b items/sec   6001.168              {'run_name': 
'ArrayRangeEqualsBoolean/32768/0', 'run_type': 'iteration', 'repetitions': 0, 
'repetition_index': 0, 'threads': 1, 'iterations': 17929, 'null_percent': 0.0}
   28      ArrayRangeEqualsFixedSizeBinary/32768/0  369.542m items/sec   
14.798b items/sec   3904.348       {'run_name': 
'ArrayRangeEqualsFixedSizeBinary/32768/0', 'run_type': 'iteration', 
'repetitions': 0, 'repetition_index': 0, 'threads': 1, 'iterations': 8130, 
'null_percent': 0.0}
   24           ArrayRangeEqualsStruct/32768/10000    6.251m items/sec  
240.453m items/sec   3746.338            {'run_name': 
'ArrayRangeEqualsStruct/32768/10000', 'run_type': 'iteration', 'repetitions': 
0, 'repetition_index': 0, 'threads': 1, 'iterations': 134, 'null_percent': 0.01}
   36               ArrayRangeEqualsStruct/32768/1  412.074m items/sec   
13.733b items/sec   3232.616              {'run_name': 
'ArrayRangeEqualsStruct/32768/1', 'run_type': 'iteration', 'repetitions': 0, 
'repetition_index': 0, 'threads': 1, 'iterations': 8817, 'null_percent': 100.0}
   9                ArrayRangeEqualsString/32768/0   67.419m items/sec    
1.937b items/sec   2772.931                {'run_name': 
'ArrayRangeEqualsString/32768/0', 'run_type': 'iteration', 'repetitions': 0, 
'repetition_index': 0, 'threads': 1, 'iterations': 1441, 'null_percent': 0.0}
   25          ArrayRangeEqualsListOfInt32/32768/1  524.231m items/sec   
13.774b items/sec   2527.447        {'run_name': 
'ArrayRangeEqualsListOfInt32/32768/1', 'run_type': 'iteration', 'repetitions': 
0, 'repetition_index': 0, 'threads': 1, 'iterations': 11179, 'null_percent': 
100.0}
   44               ArrayRangeEqualsString/32768/1  577.902m items/sec   
13.686b items/sec   2268.185             {'run_name': 
'ArrayRangeEqualsString/32768/1', 'run_type': 'iteration', 'repetitions': 0, 
'repetition_index': 0, 'threads': 1, 'iterations': 12328, 'null_percent': 100.0}
   53      ArrayRangeEqualsFixedSizeBinary/32768/1  596.284m items/sec   
13.140b items/sec   2103.587    {'run_name': 
'ArrayRangeEqualsFixedSizeBinary/32768/1', 'run_type': 'iteration', 
'repetitions': 0, 'repetition_index': 0, 'threads': 1, 'iterations': 12703, 
'null_percent': 100.0}
   11           ArrayRangeEqualsString/32768/10000   67.501m items/sec    
1.382b items/sec   1947.876           {'run_name': 
'ArrayRangeEqualsString/32768/10000', 'run_type': 'iteration', 'repetitions': 
0, 'repetition_index': 0, 'threads': 1, 'iterations': 1442, 'null_percent': 
0.01}
   46          ArrayRangeEqualsListOfInt32/32768/0   42.696m items/sec  
833.958m items/sec   1853.229            {'run_name': 
'ArrayRangeEqualsListOfInt32/32768/0', 'run_type': 'iteration', 'repetitions': 
0, 'repetition_index': 0, 'threads': 1, 'iterations': 911, 'null_percent': 0.0}
   14              ArrayRangeEqualsBoolean/32768/1  698.866m items/sec   
13.374b items/sec   1813.652            {'run_name': 
'ArrayRangeEqualsBoolean/32768/1', 'run_type': 'iteration', 'repetitions': 0, 
'repetition_index': 0, 'threads': 1, 'iterations': 14929, 'null_percent': 100.0}
   38                ArrayRangeEqualsInt32/32768/1  835.824m items/sec   
13.688b items/sec   1537.720              {'run_name': 
'ArrayRangeEqualsInt32/32768/1', 'run_type': 'iteration', 'repetitions': 0, 
'repetition_index': 0, 'threads': 1, 'iterations': 17818, 'null_percent': 100.0}
   29  ArrayRangeEqualsFixedSizeBinary/32768/10000  278.025m items/sec    
4.375b items/sec   1473.475  {'run_name': 
'ArrayRangeEqualsFixedSizeBinary/32768/10000', 'run_type': 'iteration', 
'repetitions': 0, 'repetition_index': 0, 'threads': 1, 'iterations': 5937, 
'null_percent': 0.01}
   17                ArrayRangeEqualsInt32/32768/0    2.104b items/sec   
32.033b items/sec   1422.785                {'run_name': 
'ArrayRangeEqualsInt32/32768/0', 'run_type': 'iteration', 'repetitions': 0, 
'repetition_index': 0, 'threads': 1, 'iterations': 44741, 'null_percent': 0.0}
   18              ArrayRangeEqualsFloat32/32768/1  838.934m items/sec   
12.432b items/sec   1381.896            {'run_name': 
'ArrayRangeEqualsFloat32/32768/1', 'run_type': 'iteration', 'repetitions': 0, 
'repetition_index': 0, 'threads': 1, 'iterations': 17895, 'null_percent': 100.0}
   19            ArrayRangeEqualsInt32/32768/10000  757.797m items/sec    
6.848b items/sec    803.693           {'run_name': 
'ArrayRangeEqualsInt32/32768/10000', 'run_type': 'iteration', 'repetitions': 0, 
'repetition_index': 0, 'threads': 1, 'iterations': 16177, 'null_percent': 0.01}
   15      ArrayRangeEqualsListOfInt32/32768/10000   28.438m items/sec  
210.226m items/sec    639.253       {'run_name': 
'ArrayRangeEqualsListOfInt32/32768/10000', 'run_type': 'iteration', 
'repetitions': 0, 'repetition_index': 0, 'threads': 1, 'iterations': 606, 
'null_percent': 0.01}
   39          ArrayRangeEqualsFloat32/32768/10000  694.965m items/sec    
4.706b items/sec    577.178         {'run_name': 
'ArrayRangeEqualsFloat32/32768/10000', 'run_type': 'iteration', 'repetitions': 
0, 'repetition_index': 0, 'threads': 1, 'iterations': 14833, 'null_percent': 
0.01}
   3           ArrayRangeEqualsBoolean/32768/10000  538.353m items/sec    
2.968b items/sec    451.394         {'run_name': 
'ArrayRangeEqualsBoolean/32768/10000', 'run_type': 'iteration', 'repetitions': 
0, 'repetition_index': 0, 'threads': 1, 'iterations': 11475, 'null_percent': 
0.01}
   41              ArrayRangeEqualsFloat32/32768/0    2.036b items/sec   
10.235b items/sec    402.761              {'run_name': 
'ArrayRangeEqualsFloat32/32768/0', 'run_type': 'iteration', 'repetitions': 0, 
'repetition_index': 0, 'threads': 1, 'iterations': 43978, 'null_percent': 0.0}
   23             ArrayRangeEqualsStruct/32768/100    6.298m items/sec   
26.042m items/sec    313.515               {'run_name': 
'ArrayRangeEqualsStruct/32768/100', 'run_type': 'iteration', 'repetitions': 0, 
'repetition_index': 0, 'threads': 1, 'iterations': 133, 'null_percent': 1.0}
   1              ArrayRangeEqualsString/32768/100   68.074m items/sec  
275.727m items/sec    305.039              {'run_name': 
'ArrayRangeEqualsString/32768/100', 'run_type': 'iteration', 'repetitions': 0, 
'repetition_index': 0, 'threads': 1, 'iterations': 1453, 'null_percent': 1.0}
   42          ArrayRangeEqualsSparseUnion/32768/0   12.649m items/sec   
38.360m items/sec    203.256            {'run_name': 
'ArrayRangeEqualsSparseUnion/32768/0', 'run_type': 'iteration', 'repetitions': 
0, 'repetition_index': 0, 'threads': 1, 'iterations': 274, 'null_percent': 0.0}
   45           ArrayRangeEqualsDenseUnion/32768/0   12.995m items/sec   
38.503m items/sec    196.287             {'run_name': 
'ArrayRangeEqualsDenseUnion/32768/0', 'run_type': 'iteration', 'repetitions': 
0, 'repetition_index': 0, 'threads': 1, 'iterations': 277, 'null_percent': 0.0}
   7     ArrayRangeEqualsFixedSizeBinary/32768/100  274.991m items/sec  
633.253m items/sec    130.281     {'run_name': 
'ArrayRangeEqualsFixedSizeBinary/32768/100', 'run_type': 'iteration', 
'repetitions': 0, 'repetition_index': 0, 'threads': 1, 'iterations': 5864, 
'null_percent': 1.0}
   13              ArrayRangeEqualsInt32/32768/100  729.634m items/sec    
1.644b items/sec    125.256              {'run_name': 
'ArrayRangeEqualsInt32/32768/100', 'run_type': 'iteration', 'repetitions': 0, 
'repetition_index': 0, 'threads': 1, 'iterations': 15582, 'null_percent': 1.0}
   12              ArrayRangeEqualsStruct/32768/10    6.948m items/sec   
14.273m items/sec    105.427               {'run_name': 
'ArrayRangeEqualsStruct/32768/10', 'run_type': 'iteration', 'repetitions': 0, 
'repetition_index': 0, 'threads': 1, 'iterations': 147, 'null_percent': 10.0}
   34               ArrayRangeEqualsStruct/32768/2   11.923m items/sec   
23.845m items/sec     99.993                {'run_name': 
'ArrayRangeEqualsStruct/32768/2', 'run_type': 'iteration', 'repetitions': 0, 
'repetition_index': 0, 'threads': 1, 'iterations': 255, 'null_percent': 50.0}
   10              ArrayRangeEqualsString/32768/10   73.461m items/sec  
146.598m items/sec     99.558              {'run_name': 
'ArrayRangeEqualsString/32768/10', 'run_type': 'iteration', 'repetitions': 0, 
'repetition_index': 0, 'threads': 1, 'iterations': 1568, 'null_percent': 10.0}
   48            ArrayRangeEqualsBoolean/32768/100  525.635m items/sec    
1.026b items/sec     95.102            {'run_name': 
'ArrayRangeEqualsBoolean/32768/100', 'run_type': 'iteration', 'repetitions': 0, 
'repetition_index': 0, 'threads': 1, 'iterations': 11216, 'null_percent': 1.0}
   21          ArrayRangeEqualsSparseUnion/32768/1   14.032m items/sec   
26.225m items/sec     86.889          {'run_name': 
'ArrayRangeEqualsSparseUnion/32768/1', 'run_type': 'iteration', 'repetitions': 
0, 'repetition_index': 0, 'threads': 1, 'iterations': 300, 'null_percent': 
100.0}
   47          ArrayRangeEqualsSparseUnion/32768/2   12.643m items/sec   
23.030m items/sec     82.160           {'run_name': 
'ArrayRangeEqualsSparseUnion/32768/2', 'run_type': 'iteration', 'repetitions': 
0, 'repetition_index': 0, 'threads': 1, 'iterations': 272, 'null_percent': 50.0}
   43      ArrayRangeEqualsSparseUnion/32768/10000   12.596m items/sec   
22.801m items/sec     81.018       {'run_name': 
'ArrayRangeEqualsSparseUnion/32768/10000', 'run_type': 'iteration', 
'repetitions': 0, 'repetition_index': 0, 'threads': 1, 'iterations': 264, 
'null_percent': 0.01}
   52         ArrayRangeEqualsSparseUnion/32768/10   12.717m items/sec   
22.911m items/sec     80.168          {'run_name': 
'ArrayRangeEqualsSparseUnion/32768/10', 'run_type': 'iteration', 'repetitions': 
0, 'repetition_index': 0, 'threads': 1, 'iterations': 272, 'null_percent': 10.0}
   0         ArrayRangeEqualsSparseUnion/32768/100   12.783m items/sec   
22.714m items/sec     77.694          {'run_name': 
'ArrayRangeEqualsSparseUnion/32768/100', 'run_type': 'iteration', 
'repetitions': 0, 'repetition_index': 0, 'threads': 1, 'iterations': 275, 
'null_percent': 1.0}
   31           ArrayRangeEqualsDenseUnion/32768/1   14.509m items/sec   
25.576m items/sec     76.279           {'run_name': 
'ArrayRangeEqualsDenseUnion/32768/1', 'run_type': 'iteration', 'repetitions': 
0, 'repetition_index': 0, 'threads': 1, 'iterations': 309, 'null_percent': 
100.0}
   20       ArrayRangeEqualsDenseUnion/32768/10000   13.193m items/sec   
22.447m items/sec     70.152        {'run_name': 
'ArrayRangeEqualsDenseUnion/32768/10000', 'run_type': 'iteration', 
'repetitions': 0, 'repetition_index': 0, 'threads': 1, 'iterations': 280, 
'null_percent': 0.01}
   35         ArrayRangeEqualsDenseUnion/32768/100   13.204m items/sec   
22.256m items/sec     68.561           {'run_name': 
'ArrayRangeEqualsDenseUnion/32768/100', 'run_type': 'iteration', 'repetitions': 
0, 'repetition_index': 0, 'threads': 1, 'iterations': 282, 'null_percent': 1.0}
   40          ArrayRangeEqualsDenseUnion/32768/10   13.183m items/sec   
22.191m items/sec     68.338           {'run_name': 
'ArrayRangeEqualsDenseUnion/32768/10', 'run_type': 'iteration', 'repetitions': 
0, 'repetition_index': 0, 'threads': 1, 'iterations': 279, 'null_percent': 10.0}
   4            ArrayRangeEqualsDenseUnion/32768/2   13.148m items/sec   
21.996m items/sec     67.297            {'run_name': 
'ArrayRangeEqualsDenseUnion/32768/2', 'run_type': 'iteration', 'repetitions': 
0, 'repetition_index': 0, 'threads': 1, 'iterations': 280, 'null_percent': 50.0}
   22            ArrayRangeEqualsFloat32/32768/100  671.171m items/sec    
1.097b items/sec     63.414            {'run_name': 
'ArrayRangeEqualsFloat32/32768/100', 'run_type': 'iteration', 'repetitions': 0, 
'repetition_index': 0, 'threads': 1, 'iterations': 14325, 'null_percent': 1.0}
   30               ArrayRangeEqualsString/32768/2   94.060m items/sec  
149.539m items/sec     58.983               {'run_name': 
'ArrayRangeEqualsString/32768/2', 'run_type': 'iteration', 'repetitions': 0, 
'repetition_index': 0, 'threads': 1, 'iterations': 2008, 'null_percent': 50.0}
   37     ArrayRangeEqualsFixedSizeBinary/32768/10  250.975m items/sec  
305.864m items/sec     21.870     {'run_name': 
'ArrayRangeEqualsFixedSizeBinary/32768/10', 'run_type': 'iteration', 
'repetitions': 0, 'repetition_index': 0, 'threads': 1, 'iterations': 5341, 
'null_percent': 10.0}
   32               ArrayRangeEqualsInt32/32768/10  607.891m items/sec  
676.139m items/sec     11.227              {'run_name': 
'ArrayRangeEqualsInt32/32768/10', 'run_type': 'iteration', 'repetitions': 0, 
'repetition_index': 0, 'threads': 1, 'iterations': 12895, 'null_percent': 10.0}
   8       ArrayRangeEqualsFixedSizeBinary/32768/2  187.404m items/sec  
207.700m items/sec     10.830      {'run_name': 
'ArrayRangeEqualsFixedSizeBinary/32768/2', 'run_type': 'iteration', 
'repetitions': 0, 'repetition_index': 0, 'threads': 1, 'iterations': 3971, 
'null_percent': 50.0}
   49             ArrayRangeEqualsBoolean/32768/10  468.989m items/sec  
518.521m items/sec     10.561             {'run_name': 
'ArrayRangeEqualsBoolean/32768/10', 'run_type': 'iteration', 'repetitions': 0, 
'repetition_index': 0, 'threads': 1, 'iterations': 9996, 'null_percent': 10.0}
   5                 ArrayRangeEqualsInt32/32768/2  259.891m items/sec  
270.547m items/sec      4.100                {'run_name': 
'ArrayRangeEqualsInt32/32768/2', 'run_type': 'iteration', 'repetitions': 0, 
'repetition_index': 0, 'threads': 1, 'iterations': 5505, 'null_percent': 50.0}
   33              ArrayRangeEqualsFloat32/32768/2  262.994m items/sec  
268.155m items/sec      1.962              {'run_name': 
'ArrayRangeEqualsFloat32/32768/2', 'run_type': 'iteration', 'repetitions': 0, 
'repetition_index': 0, 'threads': 1, 'iterations': 5580, 'null_percent': 50.0}
   50             ArrayRangeEqualsFloat32/32768/10  577.200m items/sec  
573.157m items/sec     -0.701            {'run_name': 
'ArrayRangeEqualsFloat32/32768/10', 'run_type': 'iteration', 'repetitions': 0, 
'repetition_index': 0, 'threads': 1, 'iterations': 12270, 'null_percent': 10.0}
   2               ArrayRangeEqualsBoolean/32768/2  242.498m items/sec  
230.947m items/sec     -4.763              {'run_name': 
'ArrayRangeEqualsBoolean/32768/2', 'run_type': 'iteration', 'repetitions': 0, 
'repetition_index': 0, 'threads': 1, 'iterations': 5152, 'null_percent': 50.0}
   27        ArrayRangeEqualsListOfInt32/32768/100   28.080m items/sec   
25.874m items/sec     -7.855          {'run_name': 
'ArrayRangeEqualsListOfInt32/32768/100', 'run_type': 'iteration', 
'repetitions': 0, 'repetition_index': 0, 'threads': 1, 'iterations': 598, 
'null_percent': 1.0}
   51          ArrayRangeEqualsListOfInt32/32768/2   18.613m items/sec   
12.136m items/sec    -34.798           {'run_name': 
'ArrayRangeEqualsListOfInt32/32768/2', 'run_type': 'iteration', 'repetitions': 
0, 'repetition_index': 0, 'threads': 1, 'iterations': 397, 'null_percent': 50.0}
   6          ArrayRangeEqualsListOfInt32/32768/10   26.194m items/sec   
12.610m items/sec    -51.859          {'run_name': 
'ArrayRangeEqualsListOfInt32/32768/10', 'run_type': 'iteration', 'repetitions': 
0, 'repetition_index': 0, 'threads': 1, 'iterations': 560, 'null_percent': 10.0}
   ```


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to