This is an automated email from the ASF dual-hosted git repository.

LuciferYang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/spark.git


The following commit(s) were added to refs/heads/master by this push:
     new 83030bc0f2ba [SPARK-56874][SQL] Fast-path `DateTimeUtils.daysToMicros` 
for `ZoneOffset.UTC`
83030bc0f2ba is described below

commit 83030bc0f2ba17b5c28e7cc647d77451a4696713
Author: YangJie <[email protected]>
AuthorDate: Sun May 17 23:48:15 2026 +0800

    [SPARK-56874][SQL] Fast-path `DateTimeUtils.daysToMicros` for 
`ZoneOffset.UTC`
    
    ### What changes were proposed in this pull request?
    
    Add a `ZoneOffset.UTC` fast path to `DateTimeUtils.daysToMicros(days, 
zoneId)`:
    
    ```scala
    if (zoneId eq ZoneOffset.UTC) {
      Math.multiplyExact(days.toLong, MICROS_PER_DAY)
    } else {
      // existing LocalDate -> ZonedDateTime -> Instant path
    }
    ```
    
    For UTC the answer is simply `days * MICROS_PER_DAY`, so the slow path's 
three heap allocations (`LocalDate`, `ZonedDateTime`, `Instant`) are wasted.
    
    ### Why are the changes needed?
    
    `daysToMicros(days, ZoneOffset.UTC)` is on the per-row hot path of the 
vectorized parquet reader (`DateToTimestampNTZUpdater` and the rebase 
variants), the row-based parquet converter (`ParquetRowConverter`), the Avro 
reader (`AvroDeserializer`), and DATE -> TIMESTAMP `Cast` (interpreted + 
codegen). All of them pass the `ZoneOffset.UTC` singleton, so the 
reference-equality fast path triggers everywhere it matters.
    
    The updated results of `DateToTimestampNTZUpdater` in 
`ParquetVectorUpdaterBenchmark` are as follows:
    
    | JDK | Baseline | After     | Speedup |
    |----:|---------:|----------:|--------:|
    |  17 | 29.5 M/s | 357.5 M/s | 12.11x |
    |  21 | 38.6 M/s | 366.1 M/s | 9.48x |
    |  25 | 36.6 M/s | 378.3 M/s | 10.33x |
    
    ### Does this PR introduce _any_ user-facing change?
    
    No, pure optimization. Behavior is preserved for every input in Spark's 
valid `DateType` range. Both paths use `Math.multiplyExact` internally and 
overflow at the same `|days| ~= 107M` boundary with the same 
`ArithmeticException`, far outside any reachable input.
    
    ### How was this patch tested?
    
    New `DateTimeUtilsSuite` contract test pins down the UTC fast path:
    
    - Asserts it agrees with a fixed-offset zone (`Etc/GMT`) path for a 
representative set of `days` (zero, positive, negative, `+/-maxSafeDays`).
    - Asserts it equals `days * MICROS_PER_DAY` directly, so divergence in some 
future JDK is caught.
    - Asserts `ArithmeticException` on overflow.
    
    ### Was this patch authored or co-authored using generative AI tooling?
    
    No
    
    Closes #55893 from LuciferYang/SPARK-daystomicros-utc-fastpath.
    
    Authored-by: YangJie <[email protected]>
    Signed-off-by: yangjie01 <[email protected]>
---
 .../sql/catalyst/util/SparkDateTimeUtils.scala     | 11 +++-
 .../sql/catalyst/util/DateTimeUtilsSuite.scala     | 26 ++++++++
 ...ParquetVectorUpdaterBenchmark-jdk21-results.txt | 52 ++++++++--------
 ...ParquetVectorUpdaterBenchmark-jdk25-results.txt | 58 ++++++++---------
 .../ParquetVectorUpdaterBenchmark-results.txt      | 72 +++++++++++-----------
 5 files changed, 125 insertions(+), 94 deletions(-)

diff --git 
a/sql/api/src/main/scala/org/apache/spark/sql/catalyst/util/SparkDateTimeUtils.scala
 
b/sql/api/src/main/scala/org/apache/spark/sql/catalyst/util/SparkDateTimeUtils.scala
index 9ce9d14ed316..9684737a2286 100644
--- 
a/sql/api/src/main/scala/org/apache/spark/sql/catalyst/util/SparkDateTimeUtils.scala
+++ 
b/sql/api/src/main/scala/org/apache/spark/sql/catalyst/util/SparkDateTimeUtils.scala
@@ -228,11 +228,16 @@ trait SparkDateTimeUtils {
 
   /**
    * Converts days since 1970-01-01 at the given zone ID to microseconds since 
1970-01-01
-   * 00:00:00Z.
+   * 00:00:00Z. When `zoneId eq ZoneOffset.UTC`, takes a direct-multiply fast 
path that skips the
+   * `LocalDate`/`ZonedDateTime`/`Instant` chain.
    */
   def daysToMicros(days: Int, zoneId: ZoneId): Long = {
-    val instant = daysToLocalDate(days).atStartOfDay(zoneId).toInstant
-    instantToMicros(instant)
+    if (zoneId eq ZoneOffset.UTC) {
+      Math.multiplyExact(days.toLong, MICROS_PER_DAY)
+    } else {
+      val instant = daysToLocalDate(days).atStartOfDay(zoneId).toInstant
+      instantToMicros(instant)
+    }
   }
 
   /**
diff --git 
a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/util/DateTimeUtilsSuite.scala
 
b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/util/DateTimeUtilsSuite.scala
index 4aa03d9f8daa..4810ec69bb96 100644
--- 
a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/util/DateTimeUtilsSuite.scala
+++ 
b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/util/DateTimeUtilsSuite.scala
@@ -971,6 +971,32 @@ class DateTimeUtilsSuite extends SparkFunSuite with 
Matchers with SQLHelper {
     assert(DateTimeUtils.microsToMillis(-157700927876544L) === -157700927877L)
   }
 
+  test("daysToMicros: ZoneOffset.UTC fast path matches the generic zone path") 
{
+    // The UTC fast path returns `days * MICROS_PER_DAY` directly; assert it 
agrees with the
+    // `LocalDate -> ZonedDateTime -> Instant` path used for any other zone 
whose offset is 0
+    // (e.g. `Etc/GMT`). Covers zero, positive, negative, and values bounded 
by the largest
+    // `days` for which `days * MICROS_PER_DAY` does not overflow `Long`.
+    val maxSafeDays = (Long.MaxValue / MICROS_PER_DAY).toInt
+    val cases = Seq(0, 1, -1, 365, -365, 16800, -16800, 1_000_000, -1_000_000,
+      maxSafeDays, -maxSafeDays)
+    val gmt = ZoneId.of("Etc/GMT")
+    cases.foreach { d =>
+      assert(daysToMicros(d, ZoneOffset.UTC) === daysToMicros(d, gmt),
+        s"UTC fast path diverged from Etc/GMT path at days=$d")
+      assert(daysToMicros(d, ZoneOffset.UTC) === d.toLong * MICROS_PER_DAY,
+        s"UTC fast path != days * MICROS_PER_DAY at days=$d")
+    }
+
+    // Overflow: any `days` past `maxSafeDays` overflows `Long` and must throw 
rather than
+    // silently wrap.
+    intercept[ArithmeticException] {
+      daysToMicros(maxSafeDays + 1, ZoneOffset.UTC)
+    }
+    intercept[ArithmeticException] {
+      daysToMicros(-maxSafeDays - 1, ZoneOffset.UTC)
+    }
+  }
+
   test("SPARK-29012: special timestamp values") {
     testSpecialDatetimeValues { zoneId =>
       val tolerance = TimeUnit.SECONDS.toMicros(30)
diff --git 
a/sql/core/benchmarks/ParquetVectorUpdaterBenchmark-jdk21-results.txt 
b/sql/core/benchmarks/ParquetVectorUpdaterBenchmark-jdk21-results.txt
index b120f8d412a3..9e86eacb0e8c 100644
--- a/sql/core/benchmarks/ParquetVectorUpdaterBenchmark-jdk21-results.txt
+++ b/sql/core/benchmarks/ParquetVectorUpdaterBenchmark-jdk21-results.txt
@@ -2,45 +2,45 @@
 Identity Updaters
 
================================================================================================
 
-OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1010-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
 AMD EPYC 7763 64-Core Processor
 Identity Updaters:                        Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 
------------------------------------------------------------------------------------------------------------------------
 BooleanUpdater                                        0              0         
  0      17004.4           0.1       1.0X
-ByteUpdater (INT32 -> Byte)                           0              0         
  0       3748.2           0.3       0.2X
-ShortUpdater (INT32 -> Short)                         1              1         
  0       1683.0           0.6       0.1X
-IntegerUpdater                                        0              0         
  0      10179.2           0.1       0.6X
-LongUpdater                                           0              0         
  0       5075.5           0.2       0.3X
-FloatUpdater                                          0              0         
  0      10201.9           0.1       0.6X
-DoubleUpdater                                         0              0         
  0       5140.6           0.2       0.3X
-BinaryUpdater                                        15             15         
  0         71.3          14.0       0.0X
+ByteUpdater (INT32 -> Byte)                           0              0         
  0       3746.5           0.3       0.2X
+ShortUpdater (INT32 -> Short)                         1              1         
  0       1681.2           0.6       0.1X
+IntegerUpdater                                        0              0         
  0      10290.1           0.1       0.6X
+LongUpdater                                           0              0         
  0       3875.9           0.3       0.2X
+FloatUpdater                                          0              0         
  0      10148.5           0.1       0.6X
+DoubleUpdater                                         0              0         
  0       5141.3           0.2       0.3X
+BinaryUpdater                                        15             15         
  0         70.7          14.1       0.0X
 
 
 
================================================================================================
 Type-converting Updaters
 
================================================================================================
 
-OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1010-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
 AMD EPYC 7763 64-Core Processor
 Type-converting Updaters:                    Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 
---------------------------------------------------------------------------------------------------------------------------
-IntegerToLongUpdater                                     0              0      
     0       6208.4           0.2       1.0X
-IntegerToDoubleUpdater                                   0              0      
     0       6155.9           0.2       1.0X
-FloatToDoubleUpdater                                     0              0      
     0       2526.5           0.4       0.4X
-DateToTimestampNTZUpdater                               27             28      
     1         38.6          25.9       0.0X
-DowncastLongUpdater (INT64 -> Decimal(9,2))              0              0      
     0       5828.5           0.2       0.9X
+IntegerToLongUpdater                                     0              0      
     0       6237.3           0.2       1.0X
+IntegerToDoubleUpdater                                   0              0      
     0       6117.3           0.2       1.0X
+FloatToDoubleUpdater                                     0              0      
     0       2526.7           0.4       0.4X
+DateToTimestampNTZUpdater                                3              3      
     0        366.1           2.7       0.1X
+DowncastLongUpdater (INT64 -> Decimal(9,2))              0              0      
     0       5126.2           0.2       0.8X
 
 
 
================================================================================================
 Rebase Updaters
 
================================================================================================
 
-OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1010-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
 AMD EPYC 7763 64-Core Processor
 Rebase Updaters:                                 Best Time(ms)   Avg Time(ms)  
 Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 
-------------------------------------------------------------------------------------------------------------------------------
-IntegerWithRebaseUpdater (DATE legacy)                       0              0  
         0       3651.5           0.3       1.0X
-LongWithRebaseUpdater (TIMESTAMP_MICROS legacy)              0              0  
         0       2621.2           0.4       0.7X
+IntegerWithRebaseUpdater (DATE legacy)                       0              0  
         0       3640.1           0.3       1.0X
+LongWithRebaseUpdater (TIMESTAMP_MICROS legacy)              0              0  
         0       2281.8           0.4       0.6X
 LongAsMicrosUpdater (TIMESTAMP_MILLIS)                       2              3  
         0        420.5           2.4       0.1X
 
 
@@ -48,11 +48,11 @@ LongAsMicrosUpdater (TIMESTAMP_MILLIS)                      
 2              3
 Unsigned Updaters
 
================================================================================================
 
-OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1010-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
 AMD EPYC 7763 64-Core Processor
 Unsigned Updaters:                             Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 
-----------------------------------------------------------------------------------------------------------------------------
-UnsignedIntegerUpdater (UINT32 -> Long)                    0              0    
       0       5879.9           0.2       1.0X
+UnsignedIntegerUpdater (UINT32 -> Long)                    0              0    
       0       5141.0           0.2       1.0X
 UnsignedLongUpdater (UINT64 -> Decimal(20,0))             16             17    
       0         63.8          15.7       0.0X
 
 
@@ -60,25 +60,25 @@ UnsignedLongUpdater (UINT64 -> Decimal(20,0))             
16             17
 Decimal Updaters
 
================================================================================================
 
-OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1010-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
 AMD EPYC 7763 64-Core Processor
 Decimal Updaters:                         Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 
------------------------------------------------------------------------------------------------------------------------
-IntegerToDecimalUpdater                               0              0         
  0      10144.6           0.1       1.0X
-LongToDecimalUpdater                                  0              0         
  0       5061.5           0.2       0.5X
-FixedLenByteArrayToDecimalUpdater                    20             21         
  1         51.3          19.5       0.0X
+IntegerToDecimalUpdater                               0              0         
  0      10288.1           0.1       1.0X
+LongToDecimalUpdater                                  0              0         
  0       3872.9           0.3       0.4X
+FixedLenByteArrayToDecimalUpdater                    21             21         
  1         50.2          19.9       0.0X
 
 
 
================================================================================================
 FixedLenByteArray Updaters
 
================================================================================================
 
-OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1010-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
 AMD EPYC 7763 64-Core Processor
 FixedLenByteArray Updaters:                              Best Time(ms)   Avg 
Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 
---------------------------------------------------------------------------------------------------------------------------------------
-FixedLenByteArrayUpdater (len=16 -> Binary)                         20         
    21           1         51.8          19.3       1.0X
+FixedLenByteArrayUpdater (len=16 -> Binary)                         20         
    21           2         51.8          19.3       1.0X
 FixedLenByteArrayAsIntUpdater (len=4 -> Decimal(9,2))                7         
     7           0        160.2           6.2       3.1X
-FixedLenByteArrayAsLongUpdater (len=8 -> Decimal(18,4))              8         
     8           0        133.2           7.5       2.6X
+FixedLenByteArrayAsLongUpdater (len=8 -> Decimal(18,4))              8         
     8           0        133.3           7.5       2.6X
 
 
diff --git 
a/sql/core/benchmarks/ParquetVectorUpdaterBenchmark-jdk25-results.txt 
b/sql/core/benchmarks/ParquetVectorUpdaterBenchmark-jdk25-results.txt
index 6dfd2fdadc25..aed60eaf5136 100644
--- a/sql/core/benchmarks/ParquetVectorUpdaterBenchmark-jdk25-results.txt
+++ b/sql/core/benchmarks/ParquetVectorUpdaterBenchmark-jdk25-results.txt
@@ -2,45 +2,45 @@
 Identity Updaters
 
================================================================================================
 
-OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1010-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
 AMD EPYC 7763 64-Core Processor
 Identity Updaters:                        Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 
------------------------------------------------------------------------------------------------------------------------
-BooleanUpdater                                        0              0         
  0      17160.2           0.1       1.0X
-ByteUpdater (INT32 -> Byte)                           0              0         
  0       3686.1           0.3       0.2X
-ShortUpdater (INT32 -> Short)                         1              1         
  0       1662.8           0.6       0.1X
-IntegerUpdater                                        0              0         
  0      10282.0           0.1       0.6X
-LongUpdater                                           0              0         
  0       5151.9           0.2       0.3X
-FloatUpdater                                          0              0         
  0      10306.3           0.1       0.6X
-DoubleUpdater                                         0              0         
  0       5149.1           0.2       0.3X
-BinaryUpdater                                        15             16         
  0         67.8          14.8       0.0X
+BooleanUpdater                                        0              0         
  0      17126.9           0.1       1.0X
+ByteUpdater (INT32 -> Byte)                           0              0         
  0       3721.3           0.3       0.2X
+ShortUpdater (INT32 -> Short)                         1              1         
  0       1662.6           0.6       0.1X
+IntegerUpdater                                        0              0         
  0      10216.0           0.1       0.6X
+LongUpdater                                           0              0         
  0       5150.9           0.2       0.3X
+FloatUpdater                                          0              0         
  0      10313.5           0.1       0.6X
+DoubleUpdater                                         0              0         
  0       5147.6           0.2       0.3X
+BinaryUpdater                                        16             16         
  0         66.4          15.1       0.0X
 
 
 
================================================================================================
 Type-converting Updaters
 
================================================================================================
 
-OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1010-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
 AMD EPYC 7763 64-Core Processor
 Type-converting Updaters:                    Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 
---------------------------------------------------------------------------------------------------------------------------
-IntegerToLongUpdater                                     0              0      
     0       6390.8           0.2       1.0X
-IntegerToDoubleUpdater                                   0              0      
     0       6415.4           0.2       1.0X
-FloatToDoubleUpdater                                     0              0      
     0       3196.5           0.3       0.5X
-DateToTimestampNTZUpdater                               29             29      
     0         36.6          27.3       0.0X
-DowncastLongUpdater (INT64 -> Decimal(9,2))              0              0      
     0       6568.8           0.2       1.0X
+IntegerToLongUpdater                                     0              0      
     0       5428.8           0.2       1.0X
+IntegerToDoubleUpdater                                   0              0      
     0       5132.3           0.2       0.9X
+FloatToDoubleUpdater                                     0              0      
     0       3199.4           0.3       0.6X
+DateToTimestampNTZUpdater                                3              3      
     1        378.3           2.6       0.1X
+DowncastLongUpdater (INT64 -> Decimal(9,2))              0              0      
     0       6548.3           0.2       1.2X
 
 
 
================================================================================================
 Rebase Updaters
 
================================================================================================
 
-OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1010-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
 AMD EPYC 7763 64-Core Processor
 Rebase Updaters:                                 Best Time(ms)   Avg Time(ms)  
 Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 
-------------------------------------------------------------------------------------------------------------------------------
-IntegerWithRebaseUpdater (DATE legacy)                       0              0  
         0       3665.9           0.3       1.0X
-LongWithRebaseUpdater (TIMESTAMP_MICROS legacy)              0              0  
         0       2652.9           0.4       0.7X
+IntegerWithRebaseUpdater (DATE legacy)                       0              0  
         0       3097.0           0.3       1.0X
+LongWithRebaseUpdater (TIMESTAMP_MICROS legacy)              0              0  
         0       2286.8           0.4       0.7X
 LongAsMicrosUpdater (TIMESTAMP_MILLIS)                       3              3  
         0        371.3           2.7       0.1X
 
 
@@ -48,37 +48,37 @@ LongAsMicrosUpdater (TIMESTAMP_MILLIS)                      
 3              3
 Unsigned Updaters
 
================================================================================================
 
-OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1010-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
 AMD EPYC 7763 64-Core Processor
 Unsigned Updaters:                             Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 
-----------------------------------------------------------------------------------------------------------------------------
-UnsignedIntegerUpdater (UINT32 -> Long)                    0              0    
       0       5111.6           0.2       1.0X
-UnsignedLongUpdater (UINT64 -> Decimal(20,0))             17             18    
       0         60.4          16.6       0.0X
+UnsignedIntegerUpdater (UINT32 -> Long)                    0              0    
       0       5119.0           0.2       1.0X
+UnsignedLongUpdater (UINT64 -> Decimal(20,0))             17             17    
       0         60.4          16.6       0.0X
 
 
 
================================================================================================
 Decimal Updaters
 
================================================================================================
 
-OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1010-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
 AMD EPYC 7763 64-Core Processor
 Decimal Updaters:                         Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 
------------------------------------------------------------------------------------------------------------------------
-IntegerToDecimalUpdater                               0              0         
  0      10205.8           0.1       1.0X
-LongToDecimalUpdater                                  0              0         
  0       5111.4           0.2       0.5X
-FixedLenByteArrayToDecimalUpdater                    21             21         
  2         50.9          19.6       0.0X
+IntegerToDecimalUpdater                               0              0         
  0       7753.9           0.1       1.0X
+LongToDecimalUpdater                                  0              0         
  0       3880.7           0.3       0.5X
+FixedLenByteArrayToDecimalUpdater                    21             21         
  0         50.9          19.6       0.0X
 
 
 
================================================================================================
 FixedLenByteArray Updaters
 
================================================================================================
 
-OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1010-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
 AMD EPYC 7763 64-Core Processor
 FixedLenByteArray Updaters:                              Best Time(ms)   Avg 
Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 
---------------------------------------------------------------------------------------------------------------------------------------
-FixedLenByteArrayUpdater (len=16 -> Binary)                         21         
    22           1         50.4          19.8       1.0X
-FixedLenByteArrayAsIntUpdater (len=4 -> Decimal(9,2))                7         
     7           0        152.6           6.6       3.0X
-FixedLenByteArrayAsLongUpdater (len=8 -> Decimal(18,4))              8         
     8           0        127.7           7.8       2.5X
+FixedLenByteArrayUpdater (len=16 -> Binary)                         21         
    21           1         50.5          19.8       1.0X
+FixedLenByteArrayAsIntUpdater (len=4 -> Decimal(9,2))                7         
     7           0        152.7           6.5       3.0X
+FixedLenByteArrayAsLongUpdater (len=8 -> Decimal(18,4))              8         
     8           0        127.8           7.8       2.5X
 
 
diff --git a/sql/core/benchmarks/ParquetVectorUpdaterBenchmark-results.txt 
b/sql/core/benchmarks/ParquetVectorUpdaterBenchmark-results.txt
index 5918db9f759b..a0ad4843991b 100644
--- a/sql/core/benchmarks/ParquetVectorUpdaterBenchmark-results.txt
+++ b/sql/core/benchmarks/ParquetVectorUpdaterBenchmark-results.txt
@@ -2,83 +2,83 @@
 Identity Updaters
 
================================================================================================
 
-OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1010-azure
-AMD EPYC 7763 64-Core Processor
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
+AMD EPYC 9V74 80-Core Processor
 Identity Updaters:                        Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 
------------------------------------------------------------------------------------------------------------------------
-BooleanUpdater                                        0              0         
  0      14617.4           0.1       1.0X
-ByteUpdater (INT32 -> Byte)                           0              0         
  0       3667.7           0.3       0.3X
-ShortUpdater (INT32 -> Short)                         1              1         
  0       2048.9           0.5       0.1X
-IntegerUpdater                                        0              0         
  0      10281.9           0.1       0.7X
-LongUpdater                                           0              0         
  0       5138.0           0.2       0.4X
-FloatUpdater                                          0              0         
  0       7742.9           0.1       0.5X
-DoubleUpdater                                         0              0         
  0       3863.4           0.3       0.3X
-BinaryUpdater                                        15             15         
  0         70.2          14.2       0.0X
+BooleanUpdater                                        0              0         
  0      14742.5           0.1       1.0X
+ByteUpdater (INT32 -> Byte)                           0              0         
  0       3584.0           0.3       0.2X
+ShortUpdater (INT32 -> Short)                         1              1         
  0       1824.8           0.5       0.1X
+IntegerUpdater                                        0              0         
  0       8346.1           0.1       0.6X
+LongUpdater                                           0              0         
  0       4103.9           0.2       0.3X
+FloatUpdater                                          0              0         
  0       8215.2           0.1       0.6X
+DoubleUpdater                                         0              0         
  0       4141.1           0.2       0.3X
+BinaryUpdater                                        18             18         
  0         58.9          17.0       0.0X
 
 
 
================================================================================================
 Type-converting Updaters
 
================================================================================================
 
-OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1010-azure
-AMD EPYC 7763 64-Core Processor
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
+AMD EPYC 9V74 80-Core Processor
 Type-converting Updaters:                    Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 
---------------------------------------------------------------------------------------------------------------------------
-IntegerToLongUpdater                                     1              1      
     0       1279.7           0.8       1.0X
-IntegerToDoubleUpdater                                   1              1      
     0       1544.8           0.6       1.2X
-FloatToDoubleUpdater                                     1              1      
     0       1417.9           0.7       1.1X
-DateToTimestampNTZUpdater                               36             36      
     1         29.5          33.9       0.0X
-DowncastLongUpdater (INT64 -> Decimal(9,2))              1              1      
     0       1287.3           0.8       1.0X
+IntegerToLongUpdater                                     1              1      
     0       1129.8           0.9       1.0X
+IntegerToDoubleUpdater                                   1              1      
     0       1365.8           0.7       1.2X
+FloatToDoubleUpdater                                     1              1      
     0       1284.3           0.8       1.1X
+DateToTimestampNTZUpdater                                3              3      
     0        357.5           2.8       0.3X
+DowncastLongUpdater (INT64 -> Decimal(9,2))              1              1      
     0       1136.5           0.9       1.0X
 
 
 
================================================================================================
 Rebase Updaters
 
================================================================================================
 
-OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1010-azure
-AMD EPYC 7763 64-Core Processor
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
+AMD EPYC 9V74 80-Core Processor
 Rebase Updaters:                                 Best Time(ms)   Avg Time(ms)  
 Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 
-------------------------------------------------------------------------------------------------------------------------------
-IntegerWithRebaseUpdater (DATE legacy)                       0              0  
         0       2599.8           0.4       1.0X
-LongWithRebaseUpdater (TIMESTAMP_MICROS legacy)              1              1  
         0       2092.2           0.5       0.8X
-LongAsMicrosUpdater (TIMESTAMP_MILLIS)                       2              2  
         0        454.7           2.2       0.2X
+IntegerWithRebaseUpdater (DATE legacy)                       0              0  
         0       2180.9           0.5       1.0X
+LongWithRebaseUpdater (TIMESTAMP_MICROS legacy)              1              1  
         0       1744.3           0.6       0.8X
+LongAsMicrosUpdater (TIMESTAMP_MILLIS)                       2              3  
         0        421.0           2.4       0.2X
 
 
 
================================================================================================
 Unsigned Updaters
 
================================================================================================
 
-OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1010-azure
-AMD EPYC 7763 64-Core Processor
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
+AMD EPYC 9V74 80-Core Processor
 Unsigned Updaters:                             Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 
-----------------------------------------------------------------------------------------------------------------------------
-UnsignedIntegerUpdater (UINT32 -> Long)                    1              1    
       0       1091.2           0.9       1.0X
-UnsignedLongUpdater (UINT64 -> Decimal(20,0))             18             18    
       0         59.1          16.9       0.1X
+UnsignedIntegerUpdater (UINT32 -> Long)                    1              1    
       0        965.9           1.0       1.0X
+UnsignedLongUpdater (UINT64 -> Decimal(20,0))             18             18    
       0         58.6          17.1       0.1X
 
 
 
================================================================================================
 Decimal Updaters
 
================================================================================================
 
-OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1010-azure
-AMD EPYC 7763 64-Core Processor
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
+AMD EPYC 9V74 80-Core Processor
 Decimal Updaters:                         Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 
------------------------------------------------------------------------------------------------------------------------
-IntegerToDecimalUpdater                               0              0         
  0      10241.7           0.1       1.0X
-LongToDecimalUpdater                                  0              0         
  0       5118.1           0.2       0.5X
-FixedLenByteArrayToDecimalUpdater                    21             21         
  0         51.1          19.6       0.0X
+IntegerToDecimalUpdater                               0              0         
  0       8299.8           0.1       1.0X
+LongToDecimalUpdater                                  0              0         
  0       4106.5           0.2       0.5X
+FixedLenByteArrayToDecimalUpdater                    24             24         
  1         43.8          22.8       0.0X
 
 
 
================================================================================================
 FixedLenByteArray Updaters
 
================================================================================================
 
-OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1010-azure
-AMD EPYC 7763 64-Core Processor
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
+AMD EPYC 9V74 80-Core Processor
 FixedLenByteArray Updaters:                              Best Time(ms)   Avg 
Time(ms)   Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
 
---------------------------------------------------------------------------------------------------------------------------------------
-FixedLenByteArrayUpdater (len=16 -> Binary)                         19         
    19           0         55.1          18.2       1.0X
-FixedLenByteArrayAsIntUpdater (len=4 -> Decimal(9,2))                7         
     7           0        160.2           6.2       2.9X
-FixedLenByteArrayAsLongUpdater (len=8 -> Decimal(18,4))              9         
     9           0        123.1           8.1       2.2X
+FixedLenByteArrayUpdater (len=16 -> Binary)                         22         
    23           0         47.0          21.3       1.0X
+FixedLenByteArrayAsIntUpdater (len=4 -> Decimal(9,2))                6         
     6           1        166.4           6.0       3.5X
+FixedLenByteArrayAsLongUpdater (len=8 -> Decimal(18,4))              8         
     9           1        125.1           8.0       2.7X
 
 


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


Reply via email to