tustvold commented on PR #2278:
URL: https://github.com/apache/arrow-rs/pull/2278#issuecomment-1202985899

   Roughly ~10% performance improvement, which isn't bad given half the 
objective was cleaning up the code with an eventual view to implementing #2257. 
The major return for DeltaBitPackDecoder would likely only be realizable with 
#2282 and larger miniblock sizes.
   
   Performance vs master
   ```
   arrow_array_reader/Int32Array/plain encoded, mandatory, no NULLs             
                                                                
                           time:   [4.8459 us 4.8589 us 4.8732 us]
                           change: [+0.3572% +0.8566% +1.3081%] (p = 0.00 < 
0.05)
                           Change within noise threshold.
   Found 6 outliers among 100 measurements (6.00%)
     3 (3.00%) high mild
     3 (3.00%) high severe
   arrow_array_reader/Int32Array/plain encoded, optional, no NULLs              
                                                               
                           time:   [22.337 us 22.347 us 22.358 us]
                           change: [-1.0612% -0.7802% -0.5283%] (p = 0.00 < 
0.05)
                           Change within noise threshold.
   Found 3 outliers among 100 measurements (3.00%)
     2 (2.00%) high mild
     1 (1.00%) high severe
   arrow_array_reader/Int32Array/plain encoded, optional, half NULLs            
                                                                 
                           time:   [28.798 us 28.815 us 28.833 us]
                           change: [-13.045% -12.928% -12.803%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 7 outliers among 100 measurements (7.00%)
     3 (3.00%) high mild
     4 (4.00%) high severe
   arrow_array_reader/Int32Array/binary packed, mandatory, no NULLs             
                                                                
                           time:   [33.001 us 33.015 us 33.031 us]
                           change: [-18.056% -18.023% -17.989%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 8 outliers among 100 measurements (8.00%)
     4 (4.00%) high mild
     4 (4.00%) high severe
   arrow_array_reader/Int32Array/binary packed, optional, no NULLs              
                                                               
                           time:   [50.711 us 50.729 us 50.747 us]
                           change: [-12.294% -12.252% -12.205%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 3 outliers among 100 measurements (3.00%)
     2 (2.00%) high mild
     1 (1.00%) high severe
   arrow_array_reader/Int32Array/binary packed, optional, half NULLs            
                                                                 
                           time:   [43.718 us 43.753 us 43.792 us]
                           change: [-15.172% -15.098% -15.016%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 6 outliers among 100 measurements (6.00%)
     3 (3.00%) high mild
     3 (3.00%) high severe
   arrow_array_reader/Int32Array/dictionary encoded, mandatory, no NULLs        
                                                                     
                           time:   [33.403 us 33.410 us 33.419 us]
                           change: [-7.3073% -7.2057% -7.0230%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 10 outliers among 100 measurements (10.00%)
     1 (1.00%) low severe
     5 (5.00%) low mild
     1 (1.00%) high mild
     3 (3.00%) high severe
   arrow_array_reader/Int32Array/dictionary encoded, optional, no NULLs         
                                                                    
                           time:   [51.100 us 51.116 us 51.133 us]
                           change: [-4.6051% -4.5621% -4.5166%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 7 outliers among 100 measurements (7.00%)
     6 (6.00%) high mild
     1 (1.00%) high severe
   arrow_array_reader/Int32Array/dictionary encoded, optional, half NULLs       
                                                                      
                           time:   [44.215 us 44.235 us 44.255 us]
                           change: [-9.9963% -9.9351% -9.8587%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 6 outliers among 100 measurements (6.00%)
     3 (3.00%) high mild
     3 (3.00%) high severe
   
   arrow_array_reader/Int64Array/plain encoded, mandatory, no NULLs             
                                                                
                           time:   [8.0967 us 8.1230 us 8.1534 us]
                           change: [+0.7474% +1.1695% +1.5384%] (p = 0.00 < 
0.05)
                           Change within noise threshold.
   Found 9 outliers among 100 measurements (9.00%)
     3 (3.00%) high mild
     6 (6.00%) high severe
   arrow_array_reader/Int64Array/plain encoded, optional, no NULLs              
                                                               
                           time:   [25.602 us 25.631 us 25.665 us]
                           change: [-1.4309% -1.0332% -0.6523%] (p = 0.00 < 
0.05)
                           Change within noise threshold.
   Found 7 outliers among 100 measurements (7.00%)
     3 (3.00%) high mild
     4 (4.00%) high severe
   arrow_array_reader/Int64Array/plain encoded, optional, half NULLs            
                                                                 
                           time:   [31.643 us 31.672 us 31.700 us]
                           change: [+14.966% +15.048% +15.132%] (p = 0.00 < 
0.05)
                           Performance has regressed.
   Found 10 outliers among 100 measurements (10.00%)
     10 (10.00%) high mild
   arrow_array_reader/Int64Array/binary packed, mandatory, no NULLs             
                                                               
                           time:   [62.860 us 62.874 us 62.891 us]
                           change: [-1.3340% -1.2969% -1.2569%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 8 outliers among 100 measurements (8.00%)
     6 (6.00%) high mild
     2 (2.00%) high severe
   arrow_array_reader/Int64Array/binary packed, optional, no NULLs              
                                                              
                           time:   [80.933 us 80.982 us 81.059 us]
                           change: [-0.8099% -0.7311% -0.6512%] (p = 0.00 < 
0.05)
                           Change within noise threshold.
   Found 9 outliers among 100 measurements (9.00%)
     4 (4.00%) high mild
     5 (5.00%) high severe
   arrow_array_reader/Int64Array/binary packed, optional, half NULLs            
                                                                
                           time:   [58.719 us 58.774 us 58.832 us]
                           change: [+6.0864% +6.1605% +6.2268%] (p = 0.00 < 
0.05)
                           Performance has regressed.
   Found 11 outliers among 100 measurements (11.00%)
     7 (7.00%) high mild
     4 (4.00%) high severe
   arrow_array_reader/Int64Array/dictionary encoded, mandatory, no NULLs        
                                                                     
                           time:   [35.035 us 35.049 us 35.065 us]
                           change: [-12.831% -12.790% -12.750%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 8 outliers among 100 measurements (8.00%)
     3 (3.00%) high mild
     5 (5.00%) high severe
   arrow_array_reader/Int64Array/dictionary encoded, optional, no NULLs         
                                                                   
                           time:   [52.687 us 52.703 us 52.720 us]
                           change: [-8.9727% -8.9393% -8.9011%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 6 outliers among 100 measurements (6.00%)
     5 (5.00%) high mild
     1 (1.00%) high severe
   arrow_array_reader/Int64Array/dictionary encoded, optional, half NULLs       
                                                                      
                           time:   [46.217 us 46.235 us 46.255 us]
                           change: [+4.6787% +4.7709% +4.8563%] (p = 0.00 < 
0.05)
                           Performance has regressed.
   Found 7 outliers among 100 measurements (7.00%)
     1 (1.00%) low mild
     4 (4.00%) high mild
     2 (2.00%) high severe
   
   arrow_array_reader/StringArray/plain encoded, mandatory, no NULLs            
                                                                
                           time:   [175.32 us 175.44 us 175.56 us]
                           change: [-3.4189% -3.2578% -3.0783%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 2 outliers among 100 measurements (2.00%)
     1 (1.00%) high mild
     1 (1.00%) high severe
   arrow_array_reader/StringArray/plain encoded, optional, no NULLs             
                                                               
                           time:   [194.47 us 194.59 us 194.74 us]
                           change: [-3.1158% -3.0118% -2.8869%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 1 outliers among 100 measurements (1.00%)
     1 (1.00%) high severe
   arrow_array_reader/StringArray/plain encoded, optional, half NULLs           
                                                                 
                           time:   [205.21 us 205.27 us 205.34 us]
                           change: [-6.1702% -6.0441% -5.9480%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 8 outliers among 100 measurements (8.00%)
     2 (2.00%) high mild
     6 (6.00%) high severe
   arrow_array_reader/StringArray/dictionary encoded, mandatory, no NULLs       
                                                                     
                           time:   [133.67 us 133.89 us 134.13 us]
                           change: [-4.3816% -4.2028% -4.0310%] (p = 0.00 < 
0.05)
                           Performance has improved.
   arrow_array_reader/StringArray/dictionary encoded, optional, no NULLs        
                                                                    
                           time:   [153.30 us 153.54 us 153.79 us]
                           change: [-1.8329% -1.6595% -1.5029%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 1 outliers among 100 measurements (1.00%)
     1 (1.00%) high mild
   arrow_array_reader/StringArray/dictionary encoded, optional, half NULLs      
                                                                      
                           time:   [183.34 us 183.49 us 183.67 us]
                           change: [-6.1044% -6.0061% -5.8991%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 3 outliers among 100 measurements (3.00%)
     3 (3.00%) high mild
   
   arrow_array_reader/StringDictionary/dictionary encoded, mandatory, no NULLs  
                                                                           
                           time:   [26.463 us 26.471 us 26.480 us]
                           change: [-0.4894% -0.4345% -0.3755%] (p = 0.00 < 
0.05)
                           Change within noise threshold.
   Found 7 outliers among 100 measurements (7.00%)
     4 (4.00%) high mild
     3 (3.00%) high severe
   arrow_array_reader/StringDictionary/dictionary encoded, optional, no NULLs   
                                                                          
                           time:   [43.910 us 43.924 us 43.941 us]
                           change: [-0.0280% +0.0426% +0.1125%] (p = 0.24 > 
0.05)
                           No change in performance detected.
   Found 6 outliers among 100 measurements (6.00%)
     3 (3.00%) high mild
     3 (3.00%) high severe
   arrow_array_reader/StringDictionary/dictionary encoded, optional, half NULLs 
                                                                            
                           time:   [49.736 us 49.766 us 49.803 us]
                           change: [+3.9807% +4.0557% +4.1406%] (p = 0.00 < 
0.05)
                           Performance has regressed.
   Found 9 outliers among 100 measurements (9.00%)
     5 (5.00%) high mild
     4 (4.00%) high severe
   ```
   
   For completeness, performance vs master with `-C target-cpu=native`. So only 
~5% but not a regression which is the important thing.
   
   ```
   arrow_array_reader/Int32Array/plain encoded, mandatory, no NULLs             
                                                                
                           time:   [4.7553 us 4.7598 us 4.7661 us]
                           change: [-0.0821% +0.7986% +1.5839%] (p = 0.06 > 
0.05)
                           No change in performance detected.
   Found 8 outliers among 100 measurements (8.00%)
     2 (2.00%) high mild
     6 (6.00%) high severe
   arrow_array_reader/Int32Array/plain encoded, optional, no NULLs              
                                                               
                           time:   [21.556 us 21.620 us 21.690 us]
                           change: [-0.9754% -0.5451% -0.0853%] (p = 0.02 < 
0.05)
                           Change within noise threshold.
   Found 13 outliers among 100 measurements (13.00%)
     5 (5.00%) high mild
     8 (8.00%) high severe
   arrow_array_reader/Int32Array/plain encoded, optional, half NULLs            
                                                                 
                           time:   [28.930 us 28.942 us 28.957 us]
                           change: [-12.993% -12.935% -12.879%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 10 outliers among 100 measurements (10.00%)
     6 (6.00%) high mild
     4 (4.00%) high severe
   arrow_array_reader/Int32Array/binary packed, mandatory, no NULLs             
                                                                
                           time:   [30.420 us 30.429 us 30.440 us]
                           change: [+2.5445% +2.7910% +2.9347%] (p = 0.00 < 
0.05)
                           Performance has regressed.
   Found 15 outliers among 100 measurements (15.00%)
     5 (5.00%) high mild
     10 (10.00%) high severe
   arrow_array_reader/Int32Array/binary packed, optional, no NULLs              
                                                               
                           time:   [47.153 us 47.164 us 47.175 us]
                           change: [+1.0496% +1.4538% +1.8614%] (p = 0.00 < 
0.05)
                           Performance has regressed.
   Found 10 outliers among 100 measurements (10.00%)
     1 (1.00%) low mild
     3 (3.00%) high mild
     6 (6.00%) high severe
   arrow_array_reader/Int32Array/binary packed, optional, half NULLs            
                                                                 
                           time:   [42.822 us 42.856 us 42.897 us]
                           change: [-7.1747% -6.9019% -6.5972%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 10 outliers among 100 measurements (10.00%)
     6 (6.00%) high mild
     4 (4.00%) high severe
   arrow_array_reader/Int32Array/dictionary encoded, mandatory, no NULLs        
                                                                     
                           time:   [30.892 us 30.899 us 30.905 us]
                           change: [-9.6399% -9.4767% -9.2311%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 4 outliers among 100 measurements (4.00%)
     2 (2.00%) high mild
     2 (2.00%) high severe
   arrow_array_reader/Int32Array/dictionary encoded, optional, no NULLs         
                                                                    
                           time:   [47.705 us 47.719 us 47.733 us]
                           change: [-6.2662% -6.0597% -5.9385%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 4 outliers among 100 measurements (4.00%)
     3 (3.00%) high mild
     1 (1.00%) high severe
   arrow_array_reader/Int32Array/dictionary encoded, optional, half NULLs       
                                                                      
                           time:   [43.416 us 43.432 us 43.449 us]
                           change: [-9.5642% -9.3380% -9.2034%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 1 outliers among 100 measurements (1.00%)
     1 (1.00%) high severe
   
   arrow_array_reader/Int64Array/plain encoded, mandatory, no NULLs             
                                                                
                           time:   [7.9014 us 7.9765 us 8.0715 us]
                           change: [-2.1869% -1.2440% -0.1997%] (p = 0.01 < 
0.05)
                           Change within noise threshold.
   Found 17 outliers among 100 measurements (17.00%)
     17 (17.00%) high severe
   arrow_array_reader/Int64Array/plain encoded, optional, no NULLs              
                                                               
                           time:   [25.072 us 25.171 us 25.303 us]
                           change: [-3.4804% -2.0406% -0.7844%] (p = 0.00 < 
0.05)
                           Change within noise threshold.
   Found 14 outliers among 100 measurements (14.00%)
     3 (3.00%) high mild
     11 (11.00%) high severe
   arrow_array_reader/Int64Array/plain encoded, optional, half NULLs            
                                                                 
                           time:   [30.868 us 30.886 us 30.907 us]
                           change: [-10.822% -10.526% -10.232%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 6 outliers among 100 measurements (6.00%)
     5 (5.00%) high mild
     1 (1.00%) high severe
   arrow_array_reader/Int64Array/binary packed, mandatory, no NULLs             
                                                               
                           time:   [62.747 us 62.765 us 62.787 us]
                           change: [+0.1408% +0.4562% +0.7639%] (p = 0.00 < 
0.05)
                           Change within noise threshold.
   Found 7 outliers among 100 measurements (7.00%)
     3 (3.00%) high mild
     4 (4.00%) high severe
   arrow_array_reader/Int64Array/binary packed, optional, no NULLs              
                                                              
                           time:   [79.580 us 79.602 us 79.628 us]
                           change: [+0.4857% +0.6106% +0.8242%] (p = 0.00 < 
0.05)
                           Change within noise threshold.
   Found 14 outliers among 100 measurements (14.00%)
     1 (1.00%) low mild
     9 (9.00%) high mild
     4 (4.00%) high severe
   arrow_array_reader/Int64Array/binary packed, optional, half NULLs            
                                                                
                           time:   [57.406 us 57.415 us 57.424 us]
                           change: [-8.3594% -8.0473% -7.7786%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 3 outliers among 100 measurements (3.00%)
     2 (2.00%) high mild
     1 (1.00%) high severe
   arrow_array_reader/Int64Array/dictionary encoded, mandatory, no NULLs        
                                                                     
                           time:   [32.319 us 32.323 us 32.328 us]
                           change: [-9.0431% -9.0036% -8.9690%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 6 outliers among 100 measurements (6.00%)
     6 (6.00%) high mild
   arrow_array_reader/Int64Array/dictionary encoded, optional, no NULLs         
                                                                    
                           time:   [49.277 us 49.289 us 49.305 us]
                           change: [-5.9239% -5.6357% -5.3767%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 7 outliers among 100 measurements (7.00%)
     1 (1.00%) low mild
     2 (2.00%) high mild
     4 (4.00%) high severe
   arrow_array_reader/Int64Array/dictionary encoded, optional, half NULLs       
                                                                      
                           time:   [44.122 us 44.141 us 44.163 us]
                           change: [-10.843% -10.591% -10.341%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 9 outliers among 100 measurements (9.00%)
     5 (5.00%) high mild
     4 (4.00%) high severe
   
   arrow_array_reader/StringArray/plain encoded, mandatory, no NULLs            
                                                                
                           time:   [176.52 us 176.59 us 176.65 us]
                           change: [-7.9276% -7.8375% -7.7034%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 8 outliers among 100 measurements (8.00%)
     2 (2.00%) low mild
     3 (3.00%) high mild
     3 (3.00%) high severe
   arrow_array_reader/StringArray/plain encoded, optional, no NULLs             
                                                               
                           time:   [194.73 us 194.83 us 194.94 us]
                           change: [-8.9202% -8.6621% -8.4009%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 15 outliers among 100 measurements (15.00%)
     12 (12.00%) low mild
     2 (2.00%) high mild
     1 (1.00%) high severe
   arrow_array_reader/StringArray/plain encoded, optional, half NULLs           
                                                                 
                           time:   [218.35 us 218.44 us 218.55 us]
                           change: [-3.4216% -3.1171% -2.7915%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 7 outliers among 100 measurements (7.00%)
     1 (1.00%) low mild
     2 (2.00%) high mild
     4 (4.00%) high severe
   arrow_array_reader/StringArray/dictionary encoded, mandatory, no NULLs       
                                                                     
                           time:   [135.36 us 135.61 us 135.90 us]
                           change: [-2.4626% -1.9884% -1.5822%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 1 outliers among 100 measurements (1.00%)
     1 (1.00%) high severe
   arrow_array_reader/StringArray/dictionary encoded, optional, no NULLs        
                                                                    
                           time:   [153.32 us 153.48 us 153.67 us]
                           change: [-1.2992% -1.0836% -0.7954%] (p = 0.00 < 
0.05)
                           Change within noise threshold.
   Found 8 outliers among 100 measurements (8.00%)
     6 (6.00%) high mild
     2 (2.00%) high severe
   arrow_array_reader/StringArray/dictionary encoded, optional, half NULLs      
                                                                      
                           time:   [197.32 us 197.47 us 197.64 us]
                           change: [+1.4295% +1.6590% +1.8209%] (p = 0.00 < 
0.05)
                           Performance has regressed.
   Found 4 outliers among 100 measurements (4.00%)
     3 (3.00%) high mild
     1 (1.00%) high severe
   
   arrow_array_reader/StringDictionary/dictionary encoded, mandatory, no NULLs  
                                                                           
                           time:   [25.246 us 25.256 us 25.265 us]
                           change: [-3.9833% -3.8835% -3.7605%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 7 outliers among 100 measurements (7.00%)
     4 (4.00%) high mild
     3 (3.00%) high severe
   arrow_array_reader/StringDictionary/dictionary encoded, optional, no NULLs   
                                                                          
                           time:   [42.021 us 42.028 us 42.037 us]
                           change: [-2.7292% -2.4821% -2.3167%] (p = 0.00 < 
0.05)
                           Performance has improved.
   Found 9 outliers among 100 measurements (9.00%)
     4 (4.00%) high mild
     5 (5.00%) high severe
   arrow_array_reader/StringDictionary/dictionary encoded, optional, half NULLs 
                                                                            
                           time:   [48.923 us 48.940 us 48.959 us]
                           change: [+4.7617% +5.0899% +5.3886%] (p = 0.00 < 
0.05)
                           Performance has regressed.
   Found 9 outliers among 100 measurements (9.00%)
     1 (1.00%) low mild
     4 (4.00%) high mild
     4 (4.00%) high severe
   ```


-- 
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.

To unsubscribe, e-mail: [email protected]

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

Reply via email to