daniel-adam-tfs commented on PR #547:
URL: https://github.com/apache/arrow-go/pull/547#issuecomment-3800030963

   By stealing the buffers and conditionally reusing the buffers based on the 
encryption/compression I got a decent improvement mostly in the allocated 
memory:
   
   ReadInt32 benchmark:
   
   ```
   goos: darwin
   goarch: amd64
   pkg: github.com/apache/arrow-go/v18/parquet/file
   cpu: Intel(R) Core(TM) i5-1038NG7 CPU @ 2.00GHz
                                     │ bench/BenchmarkReadInt32.main.txt │ 
bench/BenchmarkReadInt32.opt4.txt │
                                     │              sec/op               │   
sec/op     vs base              │
   ReadInt32/V1Page-8                                        29.48m ± 2%   
27.43m ± 2%  -6.97% (p=0.001 n=7)
   ReadInt32/V2Page-8                                        28.59m ± 1%   
27.59m ± 6%       ~ (p=0.053 n=7)
   ReadInt32/V1PageSnappy-8                                  29.27m ± 1%   
28.76m ± 2%  -1.74% (p=0.001 n=7)
   ReadInt32/V2PageSnappy-8                                  29.25m ± 2%   
28.55m ± 1%  -2.38% (p=0.001 n=7)
   ReadInt32/V1PageEncrypted-8                               30.39m ± 2%   
28.49m ± 1%  -6.25% (p=0.001 n=7)
   ReadInt32/V2PageEncrypted-8                               30.48m ± 1%   
28.67m ± 2%  -5.91% (p=0.001 n=7)
   ReadInt32/V1PageSnappyEncrypted-8                         30.42m ± 1%   
29.60m ± 1%  -2.71% (p=0.001 n=7)
   ReadInt32/V2PageSnappyEncrypted-8                         30.34m ± 1%   
29.52m ± 2%  -2.73% (p=0.001 n=7)
   geomean                                                   29.77m        
28.57m       -4.04%
   
                                     │ bench/BenchmarkReadInt32.main.txt │  
bench/BenchmarkReadInt32.opt4.txt  │
                                     │               B/op                │     
B/op      vs base               │
   ReadInt32/V1Page-8                                      18.670Mi ± 0%   
5.386Mi ± 0%  -71.15% (p=0.001 n=7)
   ReadInt32/V2Page-8                                      13.357Mi ± 0%   
5.386Mi ± 0%  -59.67% (p=0.001 n=7)
   ReadInt32/V1PageSnappy-8                                13.045Mi ± 0%   
8.433Mi ± 0%  -35.35% (p=0.001 n=7)
   ReadInt32/V2PageSnappy-8                                13.045Mi ± 0%   
8.433Mi ± 0%  -35.35% (p=0.001 n=7)
   ReadInt32/V1PageEncrypted-8                             22.241Mi ± 0%   
8.957Mi ± 0%  -59.73% (p=0.001 n=7)
   ReadInt32/V2PageEncrypted-8                             22.241Mi ± 0%   
8.957Mi ± 0%  -59.73% (p=0.001 n=7)
   ReadInt32/V1PageSnappyEncrypted-8                        16.30Mi ± 0%   
11.69Mi ± 0%  -28.28% (p=0.001 n=7)
   ReadInt32/V2PageSnappyEncrypted-8                        16.30Mi ± 0%   
11.69Mi ± 0%  -28.28% (p=0.001 n=7)
   geomean                                                  16.53Mi        
8.305Mi       -49.76%
   
                                     │ bench/BenchmarkReadInt32.main.txt │ 
bench/BenchmarkReadInt32.opt4.txt │
                                     │             allocs/op             │  
allocs/op   vs base              │
   ReadInt32/V1Page-8                                        8.739k ± 0%   
8.635k ± 0%  -1.19% (p=0.001 n=7)
   ReadInt32/V2Page-8                                        8.698k ± 0%   
8.634k ± 0%  -0.74% (p=0.001 n=7)
   ReadInt32/V1PageSnappy-8                                  8.717k ± 0%   
8.655k ± 0%  -0.71% (p=0.001 n=7)
   ReadInt32/V2PageSnappy-8                                  8.717k ± 0%   
8.655k ± 0%  -0.71% (p=0.001 n=7)
   ReadInt32/V1PageEncrypted-8                              10.100k ± 0%   
9.996k ± 0%  -1.03% (p=0.001 n=7)
   ReadInt32/V2PageEncrypted-8                              10.100k ± 0%   
9.996k ± 0%  -1.03% (p=0.001 n=7)
   ReadInt32/V1PageSnappyEncrypted-8                         10.08k ± 0%   
10.02k ± 0%  -0.61% (p=0.001 n=7)
   ReadInt32/V2PageSnappyEncrypted-8                         10.08k ± 0%   
10.02k ± 0%  -0.61% (p=0.001 n=7)
   geomean                                                   9.378k        
9.301k       -0.83%
   ```
   
   ReadInt32Buffered benchmark:
   
   
   ```
   goos: darwin
   goarch: amd64
   pkg: github.com/apache/arrow-go/v18/parquet/file
   cpu: Intel(R) Core(TM) i5-1038NG7 CPU @ 2.00GHz
                                             │ 
bench/BenchmarkReadInt32Buffered.main.txt │ 
bench/BenchmarkReadInt32Buffered.opt4.txt │
                                             │                  sec/op          
         │       sec/op         vs base              │
   ReadInt32Buffered/V1Page-8                                                
29.11m ± 2%           27.53m ± 3%  -5.43% (p=0.001 n=7)
   ReadInt32Buffered/V2Page-8                                                
28.58m ± 6%           27.59m ± 3%  -3.45% (p=0.001 n=7)
   ReadInt32Buffered/V1PageSnappy-8                                          
29.06m ± 6%           28.66m ± 1%  -1.37% (p=0.007 n=7)
   ReadInt32Buffered/V2PageSnappy-8                                          
29.01m ± 1%           28.45m ± 1%  -1.92% (p=0.001 n=7)
   ReadInt32Buffered/V1PageEncrypted-8                                       
30.22m ± 1%           28.67m ± 1%  -5.12% (p=0.001 n=7)
   ReadInt32Buffered/V2PageEncrypted-8                                       
30.34m ± 1%           28.63m ± 1%  -5.64% (p=0.001 n=7)
   ReadInt32Buffered/V1PageSnappyEncrypted-8                                 
30.03m ± 3%           29.40m ± 1%  -2.08% (p=0.038 n=7)
   ReadInt32Buffered/V2PageSnappyEncrypted-8                                 
29.83m ± 2%           29.88m ± 1%       ~ (p=0.902 n=7)
   geomean                                                                   
29.52m                28.59m       -3.13%
   
                                             │ 
bench/BenchmarkReadInt32Buffered.main.txt │ 
bench/BenchmarkReadInt32Buffered.opt4.txt │
                                             │                   B/op           
         │        B/op         vs base               │
   ReadInt32Buffered/V1Page-8                                              
15.545Mi ± 0%         5.640Mi ± 0%  -63.72% (p=0.001 n=7)
   ReadInt32Buffered/V2Page-8                                              
10.231Mi ± 0%         5.640Mi ± 0%  -44.87% (p=0.001 n=7)
   ReadInt32Buffered/V1PageSnappy-8                                        
10.232Mi ± 0%         7.203Mi ± 0%  -29.60% (p=0.001 n=7)
   ReadInt32Buffered/V2PageSnappy-8                                        
10.232Mi ± 0%         7.203Mi ± 0%  -29.60% (p=0.001 n=7)
   ReadInt32Buffered/V1PageEncrypted-8                                     
19.115Mi ± 0%         9.211Mi ± 0%  -51.81% (p=0.001 n=7)
   ReadInt32Buffered/V2PageEncrypted-8                                     
19.115Mi ± 0%         9.211Mi ± 0%  -51.81% (p=0.001 n=7)
   ReadInt32Buffered/V1PageSnappyEncrypted-8                                
13.49Mi ± 0%         10.46Mi ± 0%  -22.45% (p=0.001 n=7)
   ReadInt32Buffered/V2PageSnappyEncrypted-8                                
13.49Mi ± 0%         11.95Mi ± 0%  -11.45% (p=0.001 n=7)
   geomean                                                                  
13.51Mi              8.042Mi       -40.45%
   
                                             │ 
bench/BenchmarkReadInt32Buffered.main.txt │ 
bench/BenchmarkReadInt32Buffered.opt4.txt │
                                             │                 allocs/op        
         │      allocs/op       vs base              │
   ReadInt32Buffered/V1Page-8                                                
8.738k ± 0%           8.655k ± 0%  -0.95% (p=0.001 n=7)
   ReadInt32Buffered/V2Page-8                                                
8.696k ± 0%           8.655k ± 0%  -0.47% (p=0.001 n=7)
   ReadInt32Buffered/V1PageSnappy-8                                          
8.716k ± 0%           8.665k ± 0%  -0.59% (p=0.001 n=7)
   ReadInt32Buffered/V2PageSnappy-8                                          
8.716k ± 0%           8.665k ± 0%  -0.59% (p=0.001 n=7)
   ReadInt32Buffered/V1PageEncrypted-8                                       
10.10k ± 0%           10.02k ± 0%  -0.81% (p=0.001 n=7)
   ReadInt32Buffered/V2PageEncrypted-8                                       
10.10k ± 0%           10.02k ± 0%  -0.82% (p=0.001 n=7)
   ReadInt32Buffered/V1PageSnappyEncrypted-8                                 
10.08k ± 0%           10.03k ± 0%  -0.50% (p=0.001 n=7)
   ReadInt32Buffered/V2PageSnappyEncrypted-8                                 
10.08k ± 0%           10.04k ± 0%  -0.40% (p=0.001 n=7)
   geomean                                                                   
9.377k                9.317k       -0.64%
   ```


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