This is an automated email from the ASF dual-hosted git repository.
viirya pushed a commit to branch branch-4.x
in repository https://gitbox.apache.org/repos/asf/spark.git
The following commit(s) were added to refs/heads/branch-4.x by this push:
new 5753d1fdfa00 [SPARK-57036][SQL] Use intrinsic bulk-fill APIs for
constant-value WritableColumnVector methods
5753d1fdfa00 is described below
commit 5753d1fdfa0042bee23910e6bc267b3357955076
Author: Liang-Chi Hsieh <[email protected]>
AuthorDate: Mon May 25 00:12:13 2026 -0700
[SPARK-57036][SQL] Use intrinsic bulk-fill APIs for constant-value
WritableColumnVector methods
### What changes were proposed in this pull request?
Six bulk-fill methods on the column vectors implement constant-value
fills with degenerate per-element loops. This PR replaces them with
intrinsic substitutions:
| Method | Substitution |
| --- | --- |
| `OnHeapColumnVector.putBooleans(rowId, count, value)` |
`Arrays.fill(byte[], ..., (byte) v)` |
| `OnHeapColumnVector.putBytes(rowId, count, value)` | `Arrays.fill(byte[],
...)` |
| `OnHeapColumnVector.putShorts(rowId, count, value)` |
`Arrays.fill(short[], ...)` |
| `OnHeapColumnVector.putLongs(rowId, count, value)` | `Arrays.fill(long[],
...)` |
| `OffHeapColumnVector.putBooleans(rowId, count, value)` |
`Platform.setMemory` with small-count fallback |
| `OffHeapColumnVector.putBytes(rowId, count, value)` |
`Platform.setMemory` with small-count fallback |
The two OffHeap methods share a `SET_MEMORY_THRESHOLD = 128` constant.
Below the threshold, an inline byte loop avoids the JNI fixed cost of
`Unsafe.setMemory`; at or above, `setMemory` dominates and the gain
accelerates rapidly.
This PR also adds `WritableColumnVectorBulkFillBenchmark` to measure
these constant-value bulk-fill APIs across a count sweep covering both
the small-count (call-overhead dominated) and large-count (memory
bandwidth dominated) regimes.
### Why are the changes needed?
The bulk-fill APIs on `WritableColumnVector` are the natural call to
make from any column writer, but their implementations were per-element
loops. Switching to intrinsics:
- `Arrays.fill` is backed by HotSpot's `_jbyte_fill` / `_jshort_fill` /
`_jlong_fill` intrinsic stubs.
- `Unsafe.setMemory` lowers to a native `memset`. For OffHeap byte
fills the original per-byte `Platform.putByte` loop cannot be
vectorized through the JNI call, so the gain is dramatic at large
counts.
#### Benchmark numbers (GitHub Actions, JDK 17, Scala 2.13)
Measured by running `WritableColumnVectorBulkFillBenchmark` via the
`Run benchmarks` workflow on both the baseline (#56084) and this PR's
branch, so the two runs use identical hardware and JDK. Rate (M
elements/s):
**OffHeap byte fills (`putBytes` / `putBooleans`)** — the headline win:
| count | baseline | patched | delta |
| ------: | -------: | ------: | -----: |
| 1 | ~290 | ~240 | within run-to-run noise (~30%) |
| 8 | ~1,390 | ~1,280 | within run-to-run noise (~10%) |
| 64 | ~2,550 | ~2,450 | parity |
| 512 | ~2,700 | ~19,500 | **+7.2x** |
| 4,096 | ~2,770 | ~39,200 | **+14.1x** |
| 65,536 | ~2,780 | ~44,500 | **+16.0x** |
(Numbers averaged across `putBytes` and `putBooleans` since they share
the same code path.)
At and above the 128-element threshold, `setMemory` produces a 7-16x
improvement that grows with run length, consistent with `memset` being
amortized cleanly over long fills. Below the threshold, both runs use
the same inline byte loop, so the small differences at `count=1` and
`count=8` are GHA run-to-run variance rather than a structural change.
**OnHeap fills**: on the GHA runner (Linux + Zulu JDK 17) the C2
compiler already auto-vectorizes the original byte loop near the byte
memory-bandwidth ceiling, so `Arrays.fill` is at parity (~2,790 M/s,
unchanged across `putBooleans` / `putBytes` / `putShorts` / `putLongs`,
all counts, both baseline and patched). On Apple M4 Max + OpenJDK 21
the same change yields +5-33% in the small/medium count range. The
OnHeap changes are kept for consistency with the OffHeap fixes and to
avoid future divergence between platforms.
OffHeap multi-byte fills (`putShorts` / `putInts` / `putLongs` /
`putFloats` / `putDoubles`) are out of scope: `Platform.setMemory` is
byte-only and a value=0 short-circuit alternative was tried and showed
no measurable gain.
### Does this PR introduce _any_ user-facing change?
No.
### How was this patch tested?
Existing tests; no behavior change. Ran locally:
- `VectorizedRleValuesReaderSuite`
- `ColumnVectorSuite`
- `ColumnarBatchSuite`
- `ParquetIOSuite`
237 tests, all pass.
### Was this patch authored or co-authored using generative AI tooling?
Generated-by: Claude Code (Claude Opus 4.7)
Closes #56082 from viirya/SPARK-57036.
Authored-by: Liang-Chi Hsieh <[email protected]>
Signed-off-by: Liang-Chi Hsieh <[email protected]>
(cherry picked from commit 29fdcefb8f2035386d9b5d58d531543f57c43963)
Signed-off-by: Liang-Chi Hsieh <[email protected]>
---
...ColumnVectorBulkFillBenchmark-jdk21-results.txt | 216 ++++++++++-----------
...ColumnVectorBulkFillBenchmark-jdk25-results.txt | 216 ++++++++++-----------
...itableColumnVectorBulkFillBenchmark-results.txt | 216 ++++++++++-----------
.../execution/vectorized/OffHeapColumnVector.java | 26 ++-
.../execution/vectorized/OnHeapColumnVector.java | 18 +-
5 files changed, 350 insertions(+), 342 deletions(-)
diff --git
a/sql/core/benchmarks/WritableColumnVectorBulkFillBenchmark-jdk21-results.txt
b/sql/core/benchmarks/WritableColumnVectorBulkFillBenchmark-jdk21-results.txt
index 83539c0e629e..8a0736239ca0 100644
---
a/sql/core/benchmarks/WritableColumnVectorBulkFillBenchmark-jdk21-results.txt
+++
b/sql/core/benchmarks/WritableColumnVectorBulkFillBenchmark-jdk21-results.txt
@@ -3,255 +3,255 @@ WritableColumnVector bulk fill
================================================================================================
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putBooleans (boolean) count=1: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 79.2 12.6 1.0X
-OffHeap 0 0
0 124.4 8.0 1.6X
+OnHeap 0 0
0 410.6 2.4 1.0X
+OffHeap 0 0
0 462.7 2.2 1.1X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putBooleans (boolean) count=8: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 634.0 1.6 1.0X
-OffHeap 0 0
0 897.3 1.1 1.4X
+OnHeap 0 0
0 1520.7 0.7 1.0X
+OffHeap 0 0
0 1147.3 0.9 0.8X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putBooleans (boolean) count=64: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 7687.5 0.1 1.0X
-OffHeap 0 0
0 1642.6 0.6 0.2X
+OnHeap 0 0
0 2562.2 0.4 1.0X
+OffHeap 0 0
0 1391.7 0.7 0.5X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putBooleans (boolean) count=512: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 48232.6 0.0 1.0X
-OffHeap 0 0
0 1701.0 0.6 0.0X
+OnHeap 0 0
0 2696.6 0.4 1.0X
+OffHeap 0 0
0 19703.4 0.1 7.3X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putBooleans (boolean) count=4096: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 128770.2 0.0 1.0X
-OffHeap 2 2
0 1715.8 0.6 0.0X
+OnHeap 2 2
0 2775.4 0.4 1.0X
+OffHeap 0 0
0 39447.6 0.0 14.2X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putBooleans (boolean) count=65536: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 1 1
0 62765.7 0.0 1.0X
-OffHeap 39 39
0 1718.0 0.6 0.0X
+OnHeap 24 24
0 2788.3 0.4 1.0X
+OffHeap 2 2
0 44456.3 0.0 15.9X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putBytes (byte) count=1: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 72.6 13.8 1.0X
-OffHeap 0 0
0 108.9 9.2 1.5X
+OnHeap 0 0
0 185.2 5.4 1.0X
+OffHeap 0 0
0 122.9 8.1 0.7X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putBytes (byte) count=8: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 581.1 1.7 1.0X
-OffHeap 0 0
0 774.5 1.3 1.3X
+OnHeap 0 0
0 1144.1 0.9 1.0X
+OffHeap 0 0
0 954.6 1.0 0.8X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putBytes (byte) count=64: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 6559.5 0.2 1.0X
-OffHeap 0 0
0 2591.9 0.4 0.4X
+OnHeap 0 0
0 2416.5 0.4 1.0X
+OffHeap 0 0
0 2294.5 0.4 0.9X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putBytes (byte) count=512: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 30826.0 0.0 1.0X
-OffHeap 0 0
0 2978.3 0.3 0.1X
+OnHeap 0 0
0 2671.7 0.4 1.0X
+OffHeap 0 0
0 17075.0 0.1 6.4X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putBytes (byte) count=4096: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 125147.1 0.0 1.0X
-OffHeap 2 2
0 2668.8 0.4 0.0X
+OnHeap 2 2
0 2773.4 0.4 1.0X
+OffHeap 0 0
0 37922.5 0.0 13.7X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putBytes (byte) count=65536: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 1 1
0 62489.2 0.0 1.0X
-OffHeap 26 26
0 2585.6 0.4 0.0X
+OnHeap 24 24
0 2790.7 0.4 1.0X
+OffHeap 2 2
0 44412.4 0.0 15.9X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putShorts (short) count=1: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 69.7 14.3 1.0X
-OffHeap 0 0
0 85.0 11.8 1.2X
+OnHeap 0 0
0 130.1 7.7 1.0X
+OffHeap 0 0
0 102.4 9.8 0.8X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putShorts (short) count=8: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 547.0 1.8 1.0X
-OffHeap 0 0
0 606.2 1.6 1.1X
+OnHeap 0 0
0 763.1 1.3 1.0X
+OffHeap 0 0
0 588.5 1.7 0.8X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putShorts (short) count=64: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 5312.2 0.2 1.0X
-OffHeap 0 0
0 2135.1 0.5 0.4X
+OnHeap 0 0
0 2186.4 0.5 1.0X
+OffHeap 0 0
0 1216.6 0.8 0.6X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putShorts (short) count=512: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 25588.8 0.0 1.0X
-OffHeap 0 0
0 2371.7 0.4 0.1X
+OnHeap 0 0
0 2631.3 0.4 1.0X
+OffHeap 0 0
0 1377.5 0.7 0.5X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putShorts (short) count=4096: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 73393.7 0.0 1.0X
-OffHeap 2 2
0 2481.8 0.4 0.0X
+OnHeap 2 2
0 2775.6 0.4 1.0X
+OffHeap 3 3
0 1407.7 0.7 0.5X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putShorts (short) count=65536: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 2 2
0 32274.4 0.0 1.0X
-OffHeap 27 27
0 2486.3 0.4 0.1X
+OnHeap 24 24
0 2795.6 0.4 1.0X
+OffHeap 48 48
0 1410.0 0.7 0.5X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putInts (int) count=1: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 68.4 14.6 1.0X
-OffHeap 0 0
0 81.1 12.3 1.2X
+OnHeap 0 0
0 99.0 10.1 1.0X
+OffHeap 0 0
0 75.6 13.2 0.8X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putInts (int) count=8: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 680.3 1.5 1.0X
-OffHeap 0 0
0 581.0 1.7 0.9X
+OnHeap 0 0
0 790.4 1.3 1.0X
+OffHeap 0 0
0 294.3 3.4 0.4X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putInts (int) count=64: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 3917.3 0.3 1.0X
-OffHeap 0 0
0 2126.1 0.5 0.5X
+OnHeap 0 0
0 2212.3 0.5 1.0X
+OffHeap 0 0
0 440.6 2.3 0.2X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putInts (int) count=512: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 19192.0 0.1 1.0X
-OffHeap 0 0
0 2567.1 0.4 0.1X
+OnHeap 0 0
0 2638.3 0.4 1.0X
+OffHeap 1 1
0 402.2 2.5 0.2X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putInts (int) count=4096: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 43419.7 0.0 1.0X
-OffHeap 2 2
0 2507.4 0.4 0.1X
+OnHeap 2 2
0 2768.3 0.4 1.0X
+OffHeap 9 9
0 474.0 2.1 0.2X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putInts (int) count=65536: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 4 4
0 16570.7 0.1 1.0X
-OffHeap 27 27
1 2516.9 0.4 0.2X
+OnHeap 24 24
0 2787.8 0.4 1.0X
+OffHeap 142 142
0 473.8 2.1 0.2X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putLongs (long) count=1: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 94.2 10.6 1.0X
-OffHeap 0 0
0 81.0 12.3 0.9X
+OnHeap 0 0
0 101.6 9.8 1.0X
+OffHeap 0 0
0 82.0 12.2 0.8X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putLongs (long) count=8: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 680.2 1.5 1.0X
-OffHeap 0 0
0 347.1 2.9 0.5X
+OnHeap 0 0
0 604.2 1.7 1.0X
+OffHeap 0 0
0 302.1 3.3 0.5X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putLongs (long) count=64: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 2302.3 0.4 1.0X
-OffHeap 0 0
0 451.2 2.2 0.2X
+OnHeap 0 0
0 1954.0 0.5 1.0X
+OffHeap 0 0
0 443.8 2.3 0.2X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putLongs (long) count=512: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 2974.8 0.3 1.0X
-OffHeap 1 1
0 536.8 1.9 0.2X
+OnHeap 0 0
0 2596.3 0.4 1.0X
+OffHeap 1 1
0 467.6 2.1 0.2X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putLongs (long) count=4096: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 1 1
0 3128.9 0.3 1.0X
-OffHeap 8 8
0 539.5 1.9 0.2X
+OnHeap 2 2
0 2744.3 0.4 1.0X
+OffHeap 9 9
0 473.2 2.1 0.2X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putLongs (long) count=65536: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 21 21
0 3143.8 0.3 1.0X
-OffHeap 124 124
0 541.2 1.8 0.2X
+OnHeap 24 24
0 2790.2 0.4 1.0X
+OffHeap 142 142
0 472.1 2.1 0.2X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putNulls ((no value)) count=1: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 69.8 14.3 1.0X
-OffHeap 0 0
0 64.5 15.5 0.9X
+OnHeap 0 0
0 98.7 10.1 1.0X
+OffHeap 0 0
0 54.2 18.5 0.5X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putNulls ((no value)) count=8: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 547.0 1.8 1.0X
-OffHeap 0 0
0 296.9 3.4 0.5X
+OnHeap 0 0
0 600.6 1.7 1.0X
+OffHeap 0 0
0 252.3 4.0 0.4X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putNulls ((no value)) count=64: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 5188.5 0.2 1.0X
-OffHeap 0 0
0 481.8 2.1 0.1X
+OnHeap 0 0
0 1933.3 0.5 1.0X
+OffHeap 0 0
0 382.0 2.6 0.2X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putNulls ((no value)) count=512: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 34184.5 0.0 1.0X
-OffHeap 1 1
0 527.6 1.9 0.0X
+OnHeap 0 0
0 2585.9 0.4 1.0X
+OffHeap 1 1
0 402.4 2.5 0.2X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putNulls ((no value)) count=4096: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 104460.6 0.0 1.0X
-OffHeap 8 8
0 519.2 1.9 0.0X
+OnHeap 2 2
0 2769.8 0.4 1.0X
+OffHeap 10 10
0 406.4 2.5 0.1X
OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1013-azure
-Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
+AMD EPYC 9V74 80-Core Processor
putNulls ((no value)) count=65536: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 1 1
0 61798.5 0.0 1.0X
-OffHeap 135 135
0 497.2 2.0 0.0X
+OnHeap 24 24
0 2793.3 0.4 1.0X
+OffHeap 165 165
0 406.2 2.5 0.1X
diff --git
a/sql/core/benchmarks/WritableColumnVectorBulkFillBenchmark-jdk25-results.txt
b/sql/core/benchmarks/WritableColumnVectorBulkFillBenchmark-jdk25-results.txt
index 71e1c7251ffe..144f864c3653 100644
---
a/sql/core/benchmarks/WritableColumnVectorBulkFillBenchmark-jdk25-results.txt
+++
b/sql/core/benchmarks/WritableColumnVectorBulkFillBenchmark-jdk25-results.txt
@@ -3,255 +3,255 @@ WritableColumnVector bulk fill
================================================================================================
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putBooleans (boolean) count=1: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 414.1 2.4 1.0X
-OffHeap 0 0
0 448.5 2.2 1.1X
+OnHeap 0 0
0 422.4 2.4 1.0X
+OffHeap 0 0
0 448.3 2.2 1.1X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putBooleans (boolean) count=8: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 1147.3 0.9 1.0X
-OffHeap 0 0
0 1902.5 0.5 1.7X
+OnHeap 0 0
0 1523.0 0.7 1.0X
+OffHeap 0 0
0 1854.2 0.5 1.2X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putBooleans (boolean) count=64: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 1391.7 0.7 1.0X
-OffHeap 0 0
0 2661.1 0.4 1.9X
+OnHeap 0 0
0 2842.8 0.4 1.0X
+OffHeap 0 0
0 2880.3 0.3 1.0X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putBooleans (boolean) count=512: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 2731.7 0.4 1.0X
-OffHeap 0 0
0 2731.7 0.4 1.0X
+OnHeap 0 0
0 3069.8 0.3 1.0X
+OffHeap 0 0
0 25540.1 0.0 8.3X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putBooleans (boolean) count=4096: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 2 2
0 2783.1 0.4 1.0X
-OffHeap 2 2
0 2780.2 0.4 1.0X
+OnHeap 1 1
0 3133.9 0.3 1.0X
+OffHeap 0 0
0 45804.3 0.0 14.6X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putBooleans (boolean) count=65536: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 24 24
0 2790.6 0.4 1.0X
-OffHeap 24 24
0 2789.0 0.4 1.0X
+OnHeap 21 21
0 3152.6 0.3 1.0X
+OffHeap 1 1
0 50577.0 0.0 16.0X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putBytes (byte) count=1: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 143.0 7.0 1.0X
-OffHeap 0 0
0 285.6 3.5 2.0X
+OnHeap 0 0
0 160.2 6.2 1.0X
+OffHeap 0 0
0 195.4 5.1 1.2X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putBytes (byte) count=8: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 954.6 1.0 1.0X
-OffHeap 0 0
0 1274.2 0.8 1.3X
+OnHeap 0 0
0 1126.4 0.9 1.0X
+OffHeap 0 0
0 864.4 1.2 0.8X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putBytes (byte) count=64: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 2415.6 0.4 1.0X
-OffHeap 0 0
0 2515.9 0.4 1.0X
+OnHeap 0 0
0 2626.1 0.4 1.0X
+OffHeap 0 0
0 1421.8 0.7 0.5X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putBytes (byte) count=512: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 2667.3 0.4 1.0X
-OffHeap 0 0
0 2716.5 0.4 1.0X
+OnHeap 0 0
0 3036.3 0.3 1.0X
+OffHeap 0 0
0 29634.2 0.0 9.8X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putBytes (byte) count=4096: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 2 2
0 2771.6 0.4 1.0X
-OffHeap 2 2
0 2777.6 0.4 1.0X
+OnHeap 1 1
0 3131.8 0.3 1.0X
+OffHeap 0 0
0 47278.4 0.0 15.1X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putBytes (byte) count=65536: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 24 24
0 2788.5 0.4 1.0X
-OffHeap 24 24
0 2788.4 0.4 1.0X
+OnHeap 21 21
0 3148.1 0.3 1.0X
+OffHeap 1 1
0 49712.8 0.0 15.8X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putShorts (short) count=1: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 119.3 8.4 1.0X
-OffHeap 0 0
0 106.2 9.4 0.9X
+OnHeap 0 0
0 129.6 7.7 1.0X
+OffHeap 0 0
0 111.7 9.0 0.9X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putShorts (short) count=8: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 764.5 1.3 1.0X
-OffHeap 0 0
0 332.6 3.0 0.4X
+OnHeap 0 0
0 785.5 1.3 1.0X
+OffHeap 0 0
0 632.9 1.6 0.8X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putShorts (short) count=64: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 2167.5 0.5 1.0X
-OffHeap 0 0
0 453.6 2.2 0.2X
+OnHeap 0 0
0 2331.2 0.4 1.0X
+OffHeap 0 0
0 1339.4 0.7 0.6X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putShorts (short) count=512: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 2652.6 0.4 1.0X
-OffHeap 1 1
0 468.6 2.1 0.2X
+OnHeap 0 0
0 2964.6 0.3 1.0X
+OffHeap 0 0
0 1556.5 0.6 0.5X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putShorts (short) count=4096: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 2 2
0 2772.0 0.4 1.0X
-OffHeap 9 9
0 474.1 2.1 0.2X
+OnHeap 1 1
0 3106.0 0.3 1.0X
+OffHeap 3 3
0 1590.0 0.6 0.5X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putShorts (short) count=65536: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 24 24
0 2790.0 0.4 1.0X
-OffHeap 142 143
4 473.6 2.1 0.2X
+OnHeap 21 21
0 3154.1 0.3 1.0X
+OffHeap 42 42
0 1593.6 0.6 0.5X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putInts (int) count=1: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 95.6 10.5 1.0X
-OffHeap 0 0
0 84.4 11.8 0.9X
+OnHeap 0 0
0 147.1 6.8 1.0X
+OffHeap 0 0
0 85.4 11.7 0.6X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putInts (int) count=8: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 764.5 1.3 1.0X
-OffHeap 0 0
0 587.2 1.7 0.8X
+OnHeap 0 0
0 861.6 1.2 1.0X
+OffHeap 0 0
0 341.3 2.9 0.4X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putInts (int) count=64: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 2198.1 0.5 1.0X
-OffHeap 0 0
0 1624.6 0.6 0.7X
+OnHeap 0 0
0 2412.9 0.4 1.0X
+OffHeap 0 0
0 472.9 2.1 0.2X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putInts (int) count=512: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 2638.2 0.4 1.0X
-OffHeap 0 0
0 1927.9 0.5 0.7X
+OnHeap 0 0
0 2933.5 0.3 1.0X
+OffHeap 1 1
0 530.7 1.9 0.2X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putInts (int) count=4096: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 2 2
0 2767.5 0.4 1.0X
-OffHeap 2 2
0 1974.3 0.5 0.7X
+OnHeap 1 1
0 3095.4 0.3 1.0X
+OffHeap 8 8
0 526.8 1.9 0.2X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putInts (int) count=65536: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 24 24
0 2787.1 0.4 1.0X
-OffHeap 33 34
1 2006.8 0.5 0.7X
+OnHeap 21 21
0 3143.6 0.3 1.0X
+OffHeap 126 126
0 531.7 1.9 0.2X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putLongs (long) count=1: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 95.7 10.4 1.0X
-OffHeap 0 0
0 84.4 11.8 0.9X
+OnHeap 0 0
0 108.1 9.3 1.0X
+OffHeap 0 0
0 92.7 10.8 0.9X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putLongs (long) count=8: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 638.0 1.6 1.0X
-OffHeap 0 0
0 314.4 3.2 0.5X
+OnHeap 0 0
0 671.4 1.5 1.0X
+OffHeap 0 0
0 518.8 1.9 0.8X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putLongs (long) count=64: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 1874.5 0.5 1.0X
-OffHeap 0 0
0 449.2 2.2 0.2X
+OnHeap 0 0
0 2117.7 0.5 1.0X
+OffHeap 0 0
0 1265.8 0.8 0.6X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putLongs (long) count=512: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 2605.6 0.4 1.0X
-OffHeap 1 1
0 467.0 2.1 0.2X
+OnHeap 0 0
0 2923.4 0.3 1.0X
+OffHeap 0 0
0 1549.3 0.6 0.5X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putLongs (long) count=4096: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 2 2
0 2727.4 0.4 1.0X
-OffHeap 9 9
1 473.4 2.1 0.2X
+OnHeap 1 1
0 3062.8 0.3 1.0X
+OffHeap 3 3
0 1580.4 0.6 0.5X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putLongs (long) count=65536: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 24 24
1 2784.2 0.4 1.0X
-OffHeap 142 142
1 472.6 2.1 0.2X
+OnHeap 21 22
0 3126.5 0.3 1.0X
+OffHeap 42 42
0 1587.4 0.6 0.5X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putNulls ((no value)) count=1: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 95.6 10.5 1.0X
-OffHeap 0 0
0 57.4 17.4 0.6X
+OnHeap 0 0
0 100.2 10.0 1.0X
+OffHeap 0 0
0 75.4 13.3 0.8X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putNulls ((no value)) count=8: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 609.5 1.6 1.0X
-OffHeap 0 0
0 255.1 3.9 0.4X
+OnHeap 0 0
0 647.9 1.5 1.0X
+OffHeap 0 0
0 308.8 3.2 0.5X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putNulls ((no value)) count=64: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 1933.2 0.5 1.0X
-OffHeap 0 0
0 429.3 2.3 0.2X
+OnHeap 0 0
0 2117.0 0.5 1.0X
+OffHeap 0 0
0 467.5 2.1 0.2X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putNulls ((no value)) count=512: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 2595.6 0.4 1.0X
-OffHeap 1 1
0 465.4 2.1 0.2X
+OnHeap 0 0
0 2918.5 0.3 1.0X
+OffHeap 1 1
0 529.5 1.9 0.2X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putNulls ((no value)) count=4096: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 2 2
0 2763.6 0.4 1.0X
-OffHeap 9 9
0 473.9 2.1 0.2X
+OnHeap 1 1
0 3083.6 0.3 1.0X
+OffHeap 8 8
0 525.8 1.9 0.2X
OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putNulls ((no value)) count=65536: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 24 24
1 2791.0 0.4 1.0X
-OffHeap 142 143
1 472.8 2.1 0.2X
+OnHeap 21 21
0 3152.7 0.3 1.0X
+OffHeap 125 126
0 534.9 1.9 0.2X
diff --git
a/sql/core/benchmarks/WritableColumnVectorBulkFillBenchmark-results.txt
b/sql/core/benchmarks/WritableColumnVectorBulkFillBenchmark-results.txt
index 39fcdba9d097..ca4dbb491539 100644
--- a/sql/core/benchmarks/WritableColumnVectorBulkFillBenchmark-results.txt
+++ b/sql/core/benchmarks/WritableColumnVectorBulkFillBenchmark-results.txt
@@ -3,255 +3,255 @@ WritableColumnVector bulk fill
================================================================================================
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putBooleans (boolean) count=1: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 420.7 2.4 1.0X
-OffHeap 0 0
0 291.2 3.4 0.7X
+OnHeap 0 0
0 410.6 2.4 1.0X
+OffHeap 0 0
0 276.2 3.6 0.7X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putBooleans (boolean) count=8: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 1526.1 0.7 1.0X
-OffHeap 0 0
0 1430.2 0.7 0.9X
+OnHeap 0 0
0 1434.7 0.7 1.0X
+OffHeap 0 0
0 1616.1 0.6 1.1X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putBooleans (boolean) count=64: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 2569.1 0.4 1.0X
-OffHeap 0 0
0 2585.5 0.4 1.0X
+OnHeap 0 0
0 2803.9 0.4 1.0X
+OffHeap 0 0
0 2842.8 0.4 1.0X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putBooleans (boolean) count=512: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 2706.4 0.4 1.0X
-OffHeap 0 0
0 2681.7 0.4 1.0X
+OnHeap 0 0
0 3041.4 0.3 1.0X
+OffHeap 0 0
0 20236.5 0.0 6.7X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putBooleans (boolean) count=4096: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 2 2
0 2777.3 0.4 1.0X
-OffHeap 2 2
0 2763.5 0.4 1.0X
+OnHeap 1 1
0 3133.4 0.3 1.0X
+OffHeap 0 0
0 40173.8 0.0 12.8X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putBooleans (boolean) count=65536: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 24 24
0 2789.6 0.4 1.0X
-OffHeap 24 24
0 2777.8 0.4 1.0X
+OnHeap 21 21
0 3145.6 0.3 1.0X
+OffHeap 1 1
0 50338.2 0.0 16.0X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putBytes (byte) count=1: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 177.5 5.6 1.0X
-OffHeap 0 0
0 285.6 3.5 1.6X
+OnHeap 0 0
0 168.7 5.9 1.0X
+OffHeap 0 0
0 189.3 5.3 1.1X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putBytes (byte) count=8: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 1144.1 0.9 1.0X
-OffHeap 0 0
0 1347.6 0.7 1.2X
+OnHeap 0 0
0 1080.2 0.9 1.0X
+OffHeap 0 0
0 864.4 1.2 0.8X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putBytes (byte) count=64: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 2448.1 0.4 1.0X
-OffHeap 0 0
0 2515.9 0.4 1.0X
+OnHeap 0 0
0 2593.8 0.4 1.0X
+OffHeap 0 0
0 1421.8 0.7 0.5X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putBytes (byte) count=512: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 2686.4 0.4 1.0X
-OffHeap 0 0
0 2711.6 0.4 1.0X
+OnHeap 0 0
0 2997.7 0.3 1.0X
+OffHeap 0 0
0 18259.6 0.1 6.1X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putBytes (byte) count=4096: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 2 2
0 2774.5 0.4 1.0X
-OffHeap 2 2
0 2774.8 0.4 1.0X
+OnHeap 3 3
0 1591.4 0.6 1.0X
+OffHeap 0 0
0 40100.4 0.0 25.2X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putBytes (byte) count=65536: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 24 24
0 2791.3 0.4 1.0X
-OffHeap 24 24
0 2786.4 0.4 1.0X
+OnHeap 42 42
0 1593.2 0.6 1.0X
+OffHeap 1 1
0 50028.8 0.0 31.4X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putShorts (short) count=1: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 110.9 9.0 1.0X
-OffHeap 0 0
0 116.1 8.6 1.0X
+OnHeap 0 0
0 147.1 6.8 1.0X
+OffHeap 0 0
0 129.6 7.7 0.9X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putShorts (short) count=8: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 818.8 1.2 1.0X
-OffHeap 0 0
0 818.0 1.2 1.0X
+OnHeap 0 0
0 857.1 1.2 1.0X
+OffHeap 0 0
0 836.1 1.2 1.0X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putShorts (short) count=64: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 2212.3 0.5 1.0X
-OffHeap 0 0
0 2135.7 0.5 1.0X
+OnHeap 0 0
0 2413.0 0.4 1.0X
+OffHeap 0 0
0 2331.2 0.4 1.0X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putShorts (short) count=512: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 2657.5 0.4 1.0X
-OffHeap 0 0
0 2623.8 0.4 1.0X
+OnHeap 0 0
0 2973.5 0.3 1.0X
+OffHeap 0 0
0 2957.7 0.3 1.0X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putShorts (short) count=4096: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 2 2
0 2773.7 0.4 1.0X
-OffHeap 2 2
0 2770.3 0.4 1.0X
+OnHeap 1 1
0 3107.5 0.3 1.0X
+OffHeap 1 1
0 3105.3 0.3 1.0X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putShorts (short) count=65536: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 24 24
1 2792.9 0.4 1.0X
-OffHeap 24 24
0 2792.1 0.4 1.0X
+OnHeap 21 22
1 3154.3 0.3 1.0X
+OffHeap 21 21
0 3145.2 0.3 1.0X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putInts (int) count=1: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 111.3 9.0 1.0X
-OffHeap 0 0
0 87.0 11.5 0.8X
+OnHeap 0 0
0 153.9 6.5 1.0X
+OffHeap 0 0
0 92.7 10.8 0.6X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putInts (int) count=8: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 847.7 1.2 1.0X
-OffHeap 0 0
0 604.1 1.7 0.7X
+OnHeap 0 0
0 893.7 1.1 1.0X
+OffHeap 0 0
0 618.1 1.6 0.7X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putInts (int) count=64: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 2212.3 0.5 1.0X
-OffHeap 0 0
0 2504.3 0.4 1.1X
+OnHeap 0 0
0 2413.0 0.4 1.0X
+OffHeap 0 0
0 2695.3 0.4 1.1X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putInts (int) count=512: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 2609.3 0.4 1.0X
-OffHeap 0 0
0 4753.5 0.2 1.8X
+OnHeap 0 0
0 2940.0 0.3 1.0X
+OffHeap 0 0
0 5336.1 0.2 1.8X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putInts (int) count=4096: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 2 2
0 2762.7 0.4 1.0X
-OffHeap 1 1
0 5596.9 0.2 2.0X
+OnHeap 1 1
0 3097.0 0.3 1.0X
+OffHeap 1 1
0 6240.5 0.2 2.0X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putInts (int) count=65536: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 24 24
1 2785.7 0.4 1.0X
-OffHeap 12 12
0 5649.9 0.2 2.0X
+OnHeap 21 21
0 3144.7 0.3 1.0X
+OffHeap 11 11
1 6387.9 0.2 2.0X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putLongs (long) count=1: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 111.1 9.0 1.0X
-OffHeap 0 0
0 95.6 10.5 0.9X
+OnHeap 0 0
0 145.6 6.9 1.0X
+OffHeap 0 0
0 95.4 10.5 0.7X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putLongs (long) count=8: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 818.8 1.2 1.0X
-OffHeap 0 0
0 604.1 1.7 0.7X
+OnHeap 0 0
0 863.5 1.2 1.0X
+OffHeap 0 0
0 632.9 1.6 0.7X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putLongs (long) count=64: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 2213.0 0.5 1.0X
-OffHeap 0 0
0 1625.0 0.6 0.7X
+OnHeap 0 0
0 2413.0 0.4 1.0X
+OffHeap 0 0
0 2075.4 0.5 0.9X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putLongs (long) count=512: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 2614.6 0.4 1.0X
-OffHeap 0 0
0 1771.5 0.6 0.7X
+OnHeap 0 0
0 2939.0 0.3 1.0X
+OffHeap 0 0
0 2923.1 0.3 1.0X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putLongs (long) count=4096: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 2 2
0 2738.5 0.4 1.0X
-OffHeap 2 2
0 1778.7 0.6 0.6X
+OnHeap 1 1
0 3066.8 0.3 1.0X
+OffHeap 1 1
0 3063.4 0.3 1.0X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putLongs (long) count=65536: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 24 24
0 2785.5 0.4 1.0X
-OffHeap 38 38
1 1789.2 0.6 0.6X
+OnHeap 21 22
0 3125.9 0.3 1.0X
+OffHeap 22 22
0 3116.3 0.3 1.0X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putNulls ((no value)) count=1: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 103.9 9.6 1.0X
-OffHeap 0 0
0 82.0 12.2 0.8X
+OnHeap 0 0
0 128.6 7.8 1.0X
+OffHeap 0 0
0 92.7 10.8 0.7X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putNulls ((no value)) count=8: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 739.6 1.4 1.0X
-OffHeap 0 0
0 499.1 2.0 0.7X
+OnHeap 0 0
0 762.8 1.3 1.0X
+OffHeap 0 0
0 518.8 1.9 0.7X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putNulls ((no value)) count=64: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 2186.4 0.5 1.0X
-OffHeap 0 0
0 1141.0 0.9 0.5X
+OnHeap 0 0
0 2305.8 0.4 1.0X
+OffHeap 0 0
0 1258.2 0.8 0.5X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putNulls ((no value)) count=512: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 0 0
0 2607.9 0.4 1.0X
-OffHeap 0 0
0 1368.5 0.7 0.5X
+OnHeap 0 0
0 2928.8 0.3 1.0X
+OffHeap 0 0
0 1543.5 0.6 0.5X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putNulls ((no value)) count=4096: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 2 2
0 2767.9 0.4 1.0X
-OffHeap 3 3
0 1406.1 0.7 0.5X
+OnHeap 1 1
0 3106.4 0.3 1.0X
+OffHeap 3 3
0 1587.6 0.6 0.5X
OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1013-azure
-AMD EPYC 9V74 80-Core Processor
+AMD EPYC 7763 64-Core Processor
putNulls ((no value)) count=65536: Best Time(ms) Avg Time(ms)
Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-OnHeap 24 24
0 2791.6 0.4 1.0X
-OffHeap 48 48
0 1410.1 0.7 0.5X
+OnHeap 21 21
0 3150.1 0.3 1.0X
+OffHeap 42 42
0 1593.1 0.6 0.5X
diff --git
a/sql/core/src/main/java/org/apache/spark/sql/execution/vectorized/OffHeapColumnVector.java
b/sql/core/src/main/java/org/apache/spark/sql/execution/vectorized/OffHeapColumnVector.java
index ba740602b4c2..03a645acedf5 100644
---
a/sql/core/src/main/java/org/apache/spark/sql/execution/vectorized/OffHeapColumnVector.java
+++
b/sql/core/src/main/java/org/apache/spark/sql/execution/vectorized/OffHeapColumnVector.java
@@ -33,6 +33,14 @@ public final class OffHeapColumnVector extends
WritableColumnVector {
private static final boolean bigEndianPlatform =
ByteOrder.nativeOrder().equals(ByteOrder.BIG_ENDIAN);
+ // Below this count, byte-fill methods (putBytes / putBooleans) write bytes
in an inline
+ // loop. At or above this count, they call Platform.setMemory which lowers
to a native
+ // memset. The JNI fixed cost of setMemory dominates for very short fills;
on the
+ // benchmarked hardware (Apple M4 Max + OpenJDK 21) the crossover sits
between 64 and
+ // 512, so 128 is a conservative choice that avoids regression at small
counts while
+ // retaining the bulk of the asymptotic gain.
+ private static final int SET_MEMORY_THRESHOLD = 128;
+
/**
* Allocates columns to store elements of each field of the schema off heap.
* Capacity is the initial capacity of the vector and it will grow as
necessary. Capacity is
@@ -151,9 +159,13 @@ public final class OffHeapColumnVector extends
WritableColumnVector {
@Override
public void putBooleans(int rowId, int count, boolean value) {
- byte v = (byte)((value) ? 1 : 0);
- for (int i = 0; i < count; ++i) {
- Platform.putByte(null, data + rowId + i, v);
+ byte v = (byte) (value ? 1 : 0);
+ if (count < SET_MEMORY_THRESHOLD) {
+ for (int i = 0; i < count; ++i) {
+ Platform.putByte(null, data + rowId + i, v);
+ }
+ } else {
+ Platform.setMemory(data + rowId, v, count);
}
}
@@ -193,8 +205,12 @@ public final class OffHeapColumnVector extends
WritableColumnVector {
@Override
public void putBytes(int rowId, int count, byte value) {
- for (int i = 0; i < count; ++i) {
- Platform.putByte(null, data + rowId + i, value);
+ if (count < SET_MEMORY_THRESHOLD) {
+ for (int i = 0; i < count; ++i) {
+ Platform.putByte(null, data + rowId + i, value);
+ }
+ } else {
+ Platform.setMemory(data + rowId, value, count);
}
}
diff --git
a/sql/core/src/main/java/org/apache/spark/sql/execution/vectorized/OnHeapColumnVector.java
b/sql/core/src/main/java/org/apache/spark/sql/execution/vectorized/OnHeapColumnVector.java
index 3e1f4d7a4f83..784c9053ca81 100644
---
a/sql/core/src/main/java/org/apache/spark/sql/execution/vectorized/OnHeapColumnVector.java
+++
b/sql/core/src/main/java/org/apache/spark/sql/execution/vectorized/OnHeapColumnVector.java
@@ -146,10 +146,8 @@ public final class OnHeapColumnVector extends
WritableColumnVector {
@Override
public void putBooleans(int rowId, int count, boolean value) {
- byte v = (byte)((value) ? 1 : 0);
- for (int i = 0; i < count; ++i) {
- byteData[i + rowId] = v;
- }
+ byte v = (byte) (value ? 1 : 0);
+ Arrays.fill(byteData, rowId, rowId + count, v);
}
@Override
@@ -191,9 +189,7 @@ public final class OnHeapColumnVector extends
WritableColumnVector {
@Override
public void putBytes(int rowId, int count, byte value) {
- for (int i = 0; i < count; ++i) {
- byteData[i + rowId] = value;
- }
+ Arrays.fill(byteData, rowId, rowId + count, value);
}
@Override
@@ -253,9 +249,7 @@ public final class OnHeapColumnVector extends
WritableColumnVector {
@Override
public void putShorts(int rowId, int count, short value) {
- for (int i = 0; i < count; ++i) {
- shortData[i + rowId] = value;
- }
+ Arrays.fill(shortData, rowId, rowId + count, value);
}
@Override
@@ -395,9 +389,7 @@ public final class OnHeapColumnVector extends
WritableColumnVector {
@Override
public void putLongs(int rowId, int count, long value) {
- for (int i = 0; i < count; ++i) {
- longData[i + rowId] = value;
- }
+ Arrays.fill(longData, rowId, rowId + count, value);
}
@Override
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]