MaxGekk opened a new pull request #27491: [MINOR] Reuse results of floorDiv in 
calculations of floorMod in DateTimeUtils
URL: https://github.com/apache/spark/pull/27491
 
 
   ### What changes were proposed in this pull request?
   In the case of back-to-back calculation of `floorDiv` and `floorMod` with 
the same arguments, the result of `foorDiv` can be reused in calculation of 
`floorMod`. The `floorMod` method is defined as the following in Java standard 
library:
   ```java
       public static int floorMod(int x, int y) {
           int r = x - floorDiv(x, y) * y;
           return r;
       }
   ```
   If `floorDiv(x, y)` has been already calculated, it can be reused in `x - 
floorDiv(x, y) * y`.
   
   I propose to modify 2 places in `DateTimeUtils`:
   1. `microsToInstant` which is widely used in many date-time functions. 
`Math.floorMod(us, MICROS_PER_SECOND)` is just replaced by its definition from 
Java Math library.
   2. `truncDate`: `Math.floorMod(oldYear, divider) == 0` is replaced by 
`Math.floorDiv(oldYear, divider) * divider == oldYear` where `floorDiv(...) * 
divider` is pre-calculated.
   
   ### Why are the changes needed?
   This reduces the number of arithmetic operations, and can slightly improve 
performance of date-time functions.
   
   ### Does this PR introduce any user-facing change?
   No
   
   ### How was this patch tested?
   By existing test suites `DateTimeUtilsSuite`, `DateFunctionsSuite` and 
`DateExpressionsSuite`.

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


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to