Conversation
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
- Fix reduce() signature mismatch in dyn_.rs - Fix as_any() ambiguity in downcast helper Signed-off-by: Nicholas Gates <nick@nickgates.com> Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Merging this PR will degrade performance by 25.97%
Performance Changes
Comparing Footnotes
|
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com> Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Benchmarks: TPC-H SF=10 on S3Verdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (0.825x ➖, 5↑ 0↓)
datafusion / vortex-compact (0.856x ➖, 2↑ 0↓)
datafusion / parquet (0.673x ✅, 13↑ 0↓)
duckdb / vortex-file-compressed (0.961x ➖, 1↑ 0↓)
duckdb / vortex-compact (1.037x ➖, 0↑ 1↓)
duckdb / parquet (0.888x ➖, 1↑ 0↓)
Full attributed analysis
|
Benchmarks: Statistical and Population GeneticsVerdict: No clear signal (low confidence) duckdb / vortex-file-compressed (0.969x ➖, 1↑ 0↓)
duckdb / vortex-compact (0.963x ➖, 0↑ 0↓)
duckdb / parquet (0.963x ➖, 0↑ 0↓)
Full attributed analysis
|
Polar Signals Profiling ResultsLatest Run
Previous Runs (2)
Powered by Polar Signals Cloud |
Benchmarks: Random AccessVortex (geomean): 0.841x ✅ unknown / unknown (0.920x ➖, 12↑ 1↓)
|
| return Ok(None); | ||
| }; | ||
|
|
||
| if cfg!(debug_assertions) { | ||
| vortex_ensure!( | ||
| result.as_ref().len() == parent.len(), | ||
| result.len() == parent.len(), |
There was a problem hiding this comment.
probably worth doing this check even outside the debug_assertions block? dtype comparison can be expensive, but length should be quite fast
lwwmanning
left a comment
There was a problem hiding this comment.
minor nits, but worth merging asap as long as all the benchmark suites succeed / continue to be flat / better. it's a clear improvement from a code concepts point of view
#7215 dropped PatchedArray and left this very descriptive doc comment hanging. I moved it to be a module level comment. Signed-off-by: Andrew Duffy <andrew@a10y.dev>
See #7181
This is a large break that changes how Vortex arrays are held in memory. Previously they were modeled as Arc where all array impls used a vtable macro to unsafely transmute into a dyn Array.
This was cute, but meant that we were performing a lot of unnecessary clones and Arc allocations for things that should never have required them. We were also limited by how expressive we could make APIs since Arc is considered a foreign type.
This PR makes ArrayRef a struct, makes typed arrays a struct of
Array<V: VTable>, and adds anArrayView<'a, V>. This means all arrays are Arc allocated up-front in any of these forms, and we pass the Arc allocation around everywhere allowing us to cheaply clone in either the type-erased or typed structs.The main user-facing change is that array constructors should now live on the vtable struct, e.g.
Primitive::new(...)instead ofPrimitiveArray::new(...)