break: apply should use apply(self: Arc<Self>, ...) over apply(&self, ...)#7259
break: apply should use apply(self: Arc<Self>, ...) over apply(&self, ...)#7259joseph-isaacs merged 2 commits intodevelopfrom
apply(self: Arc<Self>, ...) over apply(&self, ...)#7259Conversation
…lf, ...)` Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Merging this PR will degrade performance by 23.77%
Performance Changes
Comparing Footnotes
|
Polar Signals Profiling ResultsLatest Run
Previous Runs (1)
Powered by Polar Signals Cloud |
Benchmarks: PolarSignals ProfilingVortex (geomean): 1.040x ➖ datafusion / vortex-file-compressed (1.040x ➖, 0↑ 2↓)
|
Benchmarks: TPC-H SF=1 on NVMEVerdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (1.256x ❌, 0↑ 21↓)
datafusion / vortex-compact (1.220x ❌, 0↑ 22↓)
datafusion / parquet (1.173x ❌, 0↑ 18↓)
datafusion / arrow (1.324x ❌, 0↑ 22↓)
duckdb / vortex-file-compressed (1.242x ❌, 0↑ 22↓)
duckdb / vortex-compact (1.126x ❌, 0↑ 15↓)
duckdb / parquet (1.104x ❌, 1↑ 12↓)
duckdb / duckdb (1.145x ❌, 0↑ 18↓)
Full attributed analysis
|
Benchmarks: FineWeb NVMeVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (0.965x ➖, 2↑ 0↓)
datafusion / vortex-compact (0.976x ➖, 0↑ 0↓)
datafusion / parquet (0.938x ➖, 1↑ 0↓)
duckdb / vortex-file-compressed (0.951x ➖, 2↑ 1↓)
duckdb / vortex-compact (0.952x ➖, 0↑ 0↓)
duckdb / parquet (0.956x ➖, 1↑ 0↓)
Full attributed analysis
|
Benchmarks: TPC-DS SF=1 on NVMEVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (0.971x ➖, 2↑ 0↓)
datafusion / vortex-compact (0.993x ➖, 0↑ 0↓)
datafusion / parquet (0.981x ➖, 3↑ 1↓)
duckdb / vortex-file-compressed (0.999x ➖, 3↑ 0↓)
duckdb / vortex-compact (1.000x ➖, 1↑ 1↓)
duckdb / parquet (1.006x ➖, 1↑ 2↓)
duckdb / duckdb (1.020x ➖, 2↑ 9↓)
Full attributed analysis
|
Benchmarks: TPC-H SF=10 on NVMEVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (0.932x ➖, 2↑ 0↓)
datafusion / vortex-compact (0.924x ➖, 3↑ 0↓)
datafusion / parquet (0.931x ➖, 2↑ 0↓)
datafusion / arrow (0.921x ➖, 4↑ 0↓)
duckdb / vortex-file-compressed (0.939x ➖, 1↑ 0↓)
duckdb / vortex-compact (0.938x ➖, 0↑ 0↓)
duckdb / parquet (0.956x ➖, 1↑ 0↓)
duckdb / duckdb (0.974x ➖, 0↑ 0↓)
Full attributed analysis
|
Benchmarks: TPC-H SF=1 on S3Verdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (0.847x ➖, 5↑ 2↓)
datafusion / vortex-compact (1.025x ➖, 3↑ 6↓)
datafusion / parquet (0.976x ➖, 4↑ 3↓)
duckdb / vortex-file-compressed (1.076x ➖, 0↑ 2↓)
duckdb / vortex-compact (1.053x ➖, 0↑ 1↓)
duckdb / parquet (0.967x ➖, 0↑ 0↓)
Full attributed analysis
|
Benchmarks: Statistical and Population GeneticsVerdict: No clear signal (low confidence) duckdb / vortex-file-compressed (0.951x ➖, 2↑ 0↓)
duckdb / vortex-compact (0.992x ➖, 0↑ 0↓)
duckdb / parquet (0.998x ➖, 0↑ 0↓)
Full attributed analysis
|
Benchmarks: Clickbench on NVMEVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (0.974x ➖, 1↑ 1↓)
datafusion / parquet (0.991x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.005x ➖, 0↑ 1↓)
duckdb / parquet (0.993x ➖, 0↑ 0↓)
duckdb / duckdb (0.999x ➖, 3↑ 0↓)
Full attributed analysis
|
Benchmarks: TPC-H SF=10 on S3Verdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (1.002x ➖, 0↑ 0↓)
datafusion / vortex-compact (0.878x ➖, 2↑ 0↓)
datafusion / parquet (0.951x ➖, 2↑ 2↓)
duckdb / vortex-file-compressed (0.999x ➖, 0↑ 1↓)
duckdb / vortex-compact (0.965x ➖, 0↑ 0↓)
duckdb / parquet (0.895x ➖, 1↑ 0↓)
Full attributed analysis
|
The `vx_array::new(Arc::new(x.into_array()))` pattern double-wraps arrays since `into_array()` already returns `Arc<dyn DynArray>`. With the new `apply(self: Arc<Self>)` signature, this breaks downcasting because the concrete type behind the trait object becomes `Arc<dyn DynArray>` instead of the actual encoding type. Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk> Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Benchmarks: FineWeb S3Verdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (1.026x ➖, 1↑ 1↓)
datafusion / vortex-compact (1.228x ➖, 0↑ 3↓)
datafusion / parquet (1.238x ➖, 0↑ 3↓)
duckdb / vortex-file-compressed (1.081x ➖, 0↑ 1↓)
duckdb / vortex-compact (0.906x ➖, 1↑ 0↓)
duckdb / parquet (1.021x ➖, 0↑ 0↓)
Full attributed analysis
|
Benchmarks: Random AccessVortex (geomean): 0.889x ✅ unknown / unknown (0.967x ➖, 7↑ 0↓)
|
Benchmarks: CompressionVortex (geomean): 0.939x ➖ unknown / unknown (0.936x ➖, 8↑ 0↓)
|
This change breaks the array.apply(expr) method however making it take the ArrayRef instead.
This fixes a huge perf regression in apply that clones the inner Array not the ArrayRef