panbingkun opened a new pull request, #48225:
URL: https://github.com/apache/spark/pull/48225

   ### What changes were proposed in this pull request?
   The pr aims to 
   - optimize `ArrayBinarySearch` for `foldable` array.
   - fix a bug in the original implementation.
   
   ### Why are the changes needed?
   The changes improve performance of the `array_binary_search()` function.
   - create an instance of `foldable{DataType}ArrayData` only once at the 
initialization ( avoid frequent calls to `ArrayData.to{DataType}Array()` ), and 
reuse it inside of `replacement` in the case when the `array` parameter is 
foldable.
   
   
   Before:
   ```
   Running benchmark: array binary search
     Running case: no foldable optimize
     Stopped after 100 iterations, 93668 ms
   
   OpenJDK 64-Bit Server VM 17.0.10+7-LTS on Mac OS X 14.6.1
   Apple M2
   array binary search:                      Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
   
------------------------------------------------------------------------------------------------------------------------
   no foldable optimize                                916            937       
   24         10.9          91.6       1.0X
   ```
   
   After:
   ```
   Running benchmark: array binary search
     Running case: has foldable optimize
     Stopped after 100 iterations, 17206 ms
   
   OpenJDK 64-Bit Server VM 17.0.10+7-LTS on Mac OS X 14.6.1
   Apple M2
   array binary search:                      Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
   
------------------------------------------------------------------------------------------------------------------------
   has foldable optimize                               164            172       
   22         61.1          16.4       1.0X
   ```
   
   
   ### Does this PR introduce _any_ user-facing change?
   No.
   
   
   ### How was this patch tested?
   - Update existed UT.
   - Pass GA.
   
   
   ### Was this patch authored or co-authored using generative AI tooling?
   No.
   


-- 
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: reviews-unsubscr...@spark.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org
For additional commands, e-mail: reviews-h...@spark.apache.org

Reply via email to