askoa commented on PR #3622:
URL: https://github.com/apache/arrow-rs/pull/3622#issuecomment-1407506292

   The current iteration of `take_run` kernel looks substantially slower 
compared to other take kernels. Mostly because of using binary search to 
determine the indices. I am working on some alternative approach. Will update 
here on the outcome. 
   
   ```
   take i32 512            time:   [645.79 ns 656.51 ns 670.97 ns]
   Found 3 outliers among 100 measurements (3.00%)
     1 (1.00%) high mild
     2 (2.00%) high severe
   
   take i32 1024           time:   [934.35 ns 954.59 ns 983.22 ns]
   Found 8 outliers among 100 measurements (8.00%)
     3 (3.00%) high mild
     5 (5.00%) high severe
   
   take check bounds i32 512
                           time:   [929.47 ns 952.88 ns 992.80 ns]
   Found 10 outliers among 100 measurements (10.00%)
     4 (4.00%) high mild
     6 (6.00%) high severe
   
   take check bounds i32 1024
                           time:   [1.5971 µs 1.6644 µs 1.7631 µs]
   Found 9 outliers among 100 measurements (9.00%)
     4 (4.00%) high mild
     5 (5.00%) high severe
   
   take i32 nulls 512      time:   [728.49 ns 750.21 ns 775.88 ns]
   Found 16 outliers among 100 measurements (16.00%)
     3 (3.00%) high mild
     13 (13.00%) high severe
   
   take i32 nulls 1024     time:   [1.1009 µs 1.1676 µs 1.2571 µs]
   Found 11 outliers among 100 measurements (11.00%)
     1 (1.00%) high mild
     10 (10.00%) high severe
   
   take bool 512           time:   [1.8112 µs 1.8761 µs 1.9625 µs]
   Found 10 outliers among 100 measurements (10.00%)
     2 (2.00%) low mild
     4 (4.00%) high mild
     4 (4.00%) high severe
   
   take bool 1024          time:   [4.2973 µs 4.3593 µs 4.4482 µs]
   Found 10 outliers among 100 measurements (10.00%)
     4 (4.00%) high mild
     6 (6.00%) high severe
   
   take bool nulls 512     time:   [2.2029 µs 2.2717 µs 2.3672 µs]
   Found 7 outliers among 100 measurements (7.00%)
     2 (2.00%) high mild
     5 (5.00%) high severe
   
   take bool nulls 1024    time:   [4.2868 µs 4.4366 µs 4.6310 µs]
   Found 5 outliers among 100 measurements (5.00%)
     3 (3.00%) high mild
     2 (2.00%) high severe
   
   take str 512            time:   [6.1369 µs 6.3286 µs 6.5568 µs]
   Found 10 outliers among 100 measurements (10.00%)
     3 (3.00%) high mild
     7 (7.00%) high severe
   
   take str 1024           time:   [10.398 µs 10.606 µs 10.840 µs]
   Found 11 outliers among 100 measurements (11.00%)
     4 (4.00%) high mild
     7 (7.00%) high severe
   
   take str null indices 512
                           time:   [6.6720 µs 7.0256 µs 7.4753 µs]
   Found 13 outliers among 100 measurements (13.00%)
     10 (10.00%) high mild
     3 (3.00%) high severe
   
   take str null indices 1024
                           time:   [12.488 µs 12.707 µs 12.960 µs]
   Found 13 outliers among 100 measurements (13.00%)
     6 (6.00%) high mild
     7 (7.00%) high severe
   
   take str null values 1024
                           time:   [14.919 µs 15.238 µs 15.622 µs]
   Found 13 outliers among 100 measurements (13.00%)
     9 (9.00%) high mild
     4 (4.00%) high severe
   
   take str null values null indices 1024
                           time:   [12.459 µs 12.800 µs 13.165 µs]
   Found 16 outliers among 100 measurements (16.00%)
     3 (3.00%) low mild
     6 (6.00%) high mild
     7 (7.00%) high severe
   
   take primitive run logical len: 1024, physical len: 512, indices: 1024
                           time:   [57.119 µs 58.460 µs 59.983 µs]
   Found 12 outliers among 100 measurements (12.00%)
     6 (6.00%) high mild
     6 (6.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