add unchecked array slot take and put#7514
Conversation
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Merging this PR will degrade performance by 23.8%
Performance Changes
Comparing Footnotes
|
Polar Signals Profiling ResultsLatest Run
Previous Runs (1)
Powered by Polar Signals Cloud |
Benchmarks: PolarSignals ProfilingVortex (geomean): 0.979x ➖ datafusion / vortex-file-compressed (0.979x ➖, 0↑ 0↓)
|
File Sizes: PolarSignals ProfilingNo file size changes detected. |
Benchmarks: TPC-H SF=1 on NVMEVerdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (0.965x ➖, 0↑ 0↓)
datafusion / vortex-compact (0.979x ➖, 0↑ 0↓)
datafusion / parquet (1.000x ➖, 0↑ 1↓)
datafusion / arrow (0.994x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (0.984x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.987x ➖, 0↑ 0↓)
duckdb / parquet (0.970x ➖, 2↑ 1↓)
duckdb / duckdb (0.957x ➖, 1↑ 0↓)
Full attributed analysis
|
File Sizes: TPC-H SF=1 on NVMENo file size changes detected. |
Benchmarks: FineWeb NVMeVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (1.232x ❌, 0↑ 8↓)
datafusion / vortex-compact (1.195x ❌, 0↑ 9↓)
datafusion / parquet (1.197x ❌, 0↑ 9↓)
duckdb / vortex-file-compressed (1.223x ❌, 0↑ 7↓)
duckdb / vortex-compact (1.190x ❌, 0↑ 7↓)
duckdb / parquet (1.211x ❌, 0↑ 9↓)
Full attributed analysis
|
File Sizes: FineWeb NVMeNo file size changes detected. |
Benchmarks: FineWeb S3Verdict: No clear signal (low confidence) datafusion / vortex-file-compressed (1.007x ➖, 1↑ 2↓)
datafusion / vortex-compact (1.021x ➖, 1↑ 2↓)
datafusion / parquet (1.091x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (0.981x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.967x ➖, 0↑ 0↓)
duckdb / parquet (0.985x ➖, 0↑ 0↓)
Full attributed analysis
|
| slot_idx: usize, | ||
| ) -> VortexResult<(ArrayRef, ArrayRef)> { | ||
| let child = if let Some(inner) = Arc::get_mut(&mut self.0) { | ||
| unsafe { inner.slots_mut()[slot_idx].take() } |
Benchmarks: TPC-H SF=10 on S3Verdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (0.981x ➖, 0↑ 0↓)
datafusion / vortex-compact (0.968x ➖, 1↑ 4↓)
datafusion / parquet (0.975x ➖, 1↑ 2↓)
duckdb / vortex-file-compressed (1.044x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.048x ➖, 0↑ 0↓)
duckdb / parquet (1.045x ➖, 0↑ 0↓)
Full attributed analysis
|
connortsui20
left a comment
There was a problem hiding this comment.
Clean up the unsafe code and I think this is fine to merge
Benchmarks: TPC-DS SF=1 on NVMEVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (0.813x ✅, 92↑ 0↓)
datafusion / vortex-compact (0.854x ✅, 73↑ 0↓)
datafusion / parquet (0.863x ✅, 74↑ 0↓)
duckdb / vortex-file-compressed (0.898x ✅, 38↑ 0↓)
duckdb / vortex-compact (0.921x ➖, 30↑ 1↓)
duckdb / parquet (0.932x ➖, 22↑ 0↓)
duckdb / duckdb (0.895x ✅, 45↑ 0↓)
Full attributed analysis
|
File Sizes: TPC-DS SF=1 on NVMENo file size changes detected. |
Benchmarks: Random AccessVortex (geomean): 0.866x ✅ unknown / unknown (0.947x ➖, 9↑ 1↓)
|
Benchmarks: Statistical and Population GeneticsVerdict: No clear signal (low confidence) duckdb / vortex-file-compressed (1.077x ➖, 0↑ 1↓)
duckdb / vortex-compact (1.034x ➖, 0↑ 0↓)
duckdb / parquet (1.026x ➖, 0↑ 0↓)
Full attributed analysis
|
File Sizes: Statistical and Population GeneticsNo file size changes detected. |
Benchmarks: TPC-H SF=10 on NVMEVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (1.081x ➖, 0↑ 4↓)
datafusion / vortex-compact (1.070x ➖, 0↑ 1↓)
datafusion / parquet (1.066x ➖, 0↑ 1↓)
datafusion / arrow (1.097x ➖, 0↑ 8↓)
duckdb / vortex-file-compressed (1.079x ➖, 0↑ 4↓)
duckdb / vortex-compact (1.062x ➖, 0↑ 0↓)
duckdb / parquet (1.023x ➖, 1↑ 0↓)
duckdb / duckdb (1.027x ➖, 0↑ 0↓)
Full attributed analysis
|
File Sizes: TPC-H SF=10 on NVMENo file size changes detected. |
Benchmarks: TPC-H SF=1 on S3Verdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (0.929x ➖, 1↑ 1↓)
datafusion / vortex-compact (0.968x ➖, 0↑ 1↓)
datafusion / parquet (1.049x ➖, 2↑ 2↓)
duckdb / vortex-file-compressed (0.955x ➖, 1↑ 0↓)
duckdb / vortex-compact (0.986x ➖, 0↑ 1↓)
duckdb / parquet (0.957x ➖, 0↑ 0↓)
Full attributed analysis
|
🚨🚨🚨❌❌❌ SQL BENCHMARK FAILED ❌❌❌🚨🚨🚨Benchmark |
Benchmarks: CompressionVortex (geomean): 1.007x ➖ unknown / unknown (1.033x ➖, 1↑ 18↓)
|
Adds crate-private unchecked slot take/put helpers on
ArrayRef. This allows for in-place swapping of array children is the array is exclusively owned.