Conversation
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk> # Conflicts: # encodings/fastlanes/src/bitpacking/vtable/mod.rs # vortex-array/src/vtable/mod.rs
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Merging this PR will degrade performance by 21.7%
Performance Changes
Comparing Footnotes
|
Polar Signals Profiling ResultsLatest Run
Previous Runs (5)
Powered by Polar Signals Cloud |
Benchmarks: PolarSignals ProfilingVortex (geomean): 1.010x ➖ datafusion / vortex-file-compressed (1.010x ➖, 0↑ 0↓)
|
Benchmarks: TPC-H SF=1 on NVMEVerdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (1.221x ❌, 0↑ 22↓)
datafusion / vortex-compact (1.193x ❌, 0↑ 20↓)
datafusion / parquet (1.145x ❌, 0↑ 16↓)
datafusion / arrow (0.990x ➖, 1↑ 1↓)
duckdb / vortex-file-compressed (1.227x ❌, 0↑ 22↓)
duckdb / vortex-compact (1.187x ❌, 0↑ 21↓)
duckdb / parquet (1.110x ❌, 0↑ 13↓)
duckdb / duckdb (1.102x ❌, 0↑ 13↓)
Full attributed analysis
|
Benchmarks: FineWeb NVMeVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (1.012x ➖, 2↑ 0↓)
datafusion / vortex-compact (1.026x ➖, 0↑ 0↓)
datafusion / parquet (1.032x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.035x ➖, 0↑ 3↓)
duckdb / vortex-compact (1.027x ➖, 0↑ 0↓)
duckdb / parquet (1.030x ➖, 0↑ 0↓)
Full attributed analysis
|
Benchmarks: TPC-DS SF=1 on NVMEVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (0.991x ➖, 1↑ 0↓)
datafusion / vortex-compact (0.987x ➖, 0↑ 0↓)
datafusion / parquet (0.986x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (0.982x ➖, 1↑ 0↓)
duckdb / vortex-compact (0.984x ➖, 3↑ 0↓)
duckdb / parquet (0.988x ➖, 1↑ 0↓)
duckdb / duckdb (0.967x ➖, 11↑ 2↓)
Full attributed analysis
|
Benchmarks: TPC-H SF=10 on NVMEVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (0.989x ➖, 0↑ 0↓)
datafusion / vortex-compact (0.994x ➖, 0↑ 0↓)
datafusion / parquet (0.998x ➖, 0↑ 0↓)
datafusion / arrow (0.985x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (0.991x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.003x ➖, 0↑ 0↓)
duckdb / parquet (1.001x ➖, 0↑ 0↓)
duckdb / duckdb (0.992x ➖, 1↑ 0↓)
Full attributed analysis
|
Benchmarks: TPC-H SF=1 on S3Verdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (1.232x ➖, 4↑ 11↓)
datafusion / vortex-compact (0.720x ➖, 8↑ 0↓)
datafusion / parquet (1.137x ➖, 4↑ 8↓)
duckdb / vortex-file-compressed (0.934x ➖, 1↑ 1↓)
duckdb / vortex-compact (0.973x ➖, 0↑ 0↓)
duckdb / parquet (1.030x ➖, 0↑ 1↓)
Full attributed analysis
|
Benchmarks: FineWeb S3Verdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (0.934x ➖, 1↑ 1↓)
datafusion / vortex-compact (0.937x ➖, 2↑ 0↓)
datafusion / parquet (1.092x ➖, 0↑ 2↓)
duckdb / vortex-file-compressed (0.881x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.055x ➖, 0↑ 3↓)
duckdb / parquet (0.972x ➖, 0↑ 0↓)
Full attributed analysis
|
Benchmarks: Random AccessVortex (geomean): 0.909x ➖ unknown / unknown (0.994x ➖, 7↑ 5↓)
|
Benchmarks: Statistical and Population GeneticsVerdict: No clear signal (low confidence) duckdb / vortex-file-compressed (1.053x ➖, 0↑ 2↓)
duckdb / vortex-compact (1.078x ➖, 0↑ 1↓)
duckdb / parquet (1.024x ➖, 0↑ 0↓)
Full attributed analysis
|
Benchmarks: Clickbench on NVMEVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (0.990x ➖, 0↑ 1↓)
datafusion / parquet (0.989x ➖, 1↑ 0↓)
duckdb / vortex-file-compressed (1.003x ➖, 2↑ 7↓)
duckdb / parquet (0.993x ➖, 0↑ 0↓)
duckdb / duckdb (0.948x ➖, 4↑ 0↓)
Full attributed analysis
|
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Benchmarks: TPC-H SF=10 on S3Verdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (0.939x ➖, 4↑ 1↓)
datafusion / vortex-compact (0.937x ➖, 4↑ 3↓)
datafusion / parquet (0.730x ➖, 9↑ 0↓)
duckdb / vortex-file-compressed (0.923x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.981x ➖, 0↑ 0↓)
duckdb / parquet (0.973x ➖, 1↑ 0↓)
Full attributed analysis
|
Benchmarks: CompressionVortex (geomean): 1.088x ➖ unknown / unknown (1.065x ➖, 3↑ 10↓)
|
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
86e00b8 to
e48e277
Compare
| slots[slot_idx] = Some(replacement); | ||
| /// Requires unique ownership of the `ArrayRef` (panics if Arc refcount > 1). | ||
| pub fn take_slot(self: &mut ArrayRef, slot_idx: usize) -> Option<ArrayRef> { | ||
| let vtable = self.vtable().clone_boxed(); |
There was a problem hiding this comment.
part of me wants to do unsafe things here to erase lifetimes and get rid of this clone. Replacing a slot wouldn't touch the vtable
There was a problem hiding this comment.
This free for zst (all out current VTables).
There was a problem hiding this comment.
yea we discussed this offline with Joe, it is a bit weird to have this hidden cost creep up depending on whether you cloned the array before or not. if Arc refcount is one we do a different thing, so that kinda defeats the purpose of ArrayRef.clone being cheap. Clone is cheap but execute just became more expensive because you cloned
onursatici
left a comment
There was a problem hiding this comment.
can you rebase so we know for certain that the wide table decompression is still fast after these changes. Currently I don't think your branch includes today's fix
|
I did locally and it was. I can do this but would prefer to fix after the fact |
| mask: &Mask, | ||
| ctx: &mut ExecutionCtx, | ||
| ) -> VortexResult<VariantArray> { | ||
| let child = array.child().clone(); |
There was a problem hiding this comment.
can you remove the clone here?
There was a problem hiding this comment.
is a follow up okay?
Removes the temp
with_slotswith aslot_mutmethod this allows for arrays mutate the children inplace.