Conversation
Polar Signals Profiling ResultsLatest Run
Previous Runs (2)
Powered by Polar Signals Cloud |
Benchmarks: PolarSignals ProfilingVortex (geomean): 1.005x ➖ datafusion / vortex-file-compressed (1.005x ➖, 0↑ 0↓)
|
File Sizes: PolarSignals ProfilingNo file size changes detected. |
Benchmarks: FineWeb NVMeVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (1.026x ➖, 0↑ 2↓)
datafusion / vortex-compact (1.002x ➖, 0↑ 0↓)
datafusion / parquet (0.984x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.009x ➖, 0↑ 1↓)
duckdb / vortex-compact (0.989x ➖, 0↑ 0↓)
duckdb / parquet (0.998x ➖, 0↑ 0↓)
Full attributed analysis
|
File Sizes: FineWeb NVMeNo file size changes detected. |
Benchmarks: TPC-H SF=1 on NVMEVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (1.060x ➖, 0↑ 2↓)
datafusion / vortex-compact (1.060x ➖, 0↑ 0↓)
datafusion / parquet (1.042x ➖, 0↑ 2↓)
datafusion / arrow (1.081x ➖, 0↑ 6↓)
duckdb / vortex-file-compressed (1.056x ➖, 0↑ 1↓)
duckdb / vortex-compact (1.063x ➖, 0↑ 3↓)
duckdb / parquet (1.008x ➖, 1↑ 1↓)
duckdb / duckdb (1.039x ➖, 0↑ 2↓)
Full attributed analysis
|
File Sizes: TPC-H SF=1 on NVMENo file size changes detected. |
🚨🚨🚨❌❌❌ SQL BENCHMARK FAILED ❌❌❌🚨🚨🚨Benchmark |
File Sizes: TPC-DS SF=1 on NVMENo file size changes detected. |
Benchmarks: TPC-H SF=1 on S3Verdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (1.199x ➖, 0↑ 8↓)
datafusion / vortex-compact (1.145x ➖, 0↑ 5↓)
datafusion / parquet (1.033x ➖, 1↑ 4↓)
duckdb / vortex-file-compressed (1.044x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.095x ➖, 0↑ 0↓)
duckdb / parquet (1.083x ➖, 0↑ 2↓)
Full attributed analysis
|
Benchmarks: TPC-H SF=10 on NVMEVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (0.993x ➖, 0↑ 0↓)
datafusion / vortex-compact (1.004x ➖, 0↑ 0↓)
datafusion / parquet (0.995x ➖, 0↑ 0↓)
datafusion / arrow (1.013x ➖, 0↑ 1↓)
duckdb / vortex-file-compressed (1.001x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.998x ➖, 0↑ 0↓)
duckdb / parquet (0.996x ➖, 0↑ 0↓)
duckdb / duckdb (0.991x ➖, 0↑ 0↓)
Full attributed analysis
|
File Sizes: TPC-H SF=10 on NVMENo file size changes detected. |
Benchmarks: FineWeb S3Verdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (1.070x ➖, 0↑ 1↓)
datafusion / vortex-compact (1.070x ➖, 0↑ 1↓)
datafusion / parquet (1.055x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.028x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.951x ➖, 0↑ 0↓)
duckdb / parquet (1.086x ➖, 0↑ 0↓)
Full attributed analysis
|
Benchmarks: Statistical and Population GeneticsVerdict: No clear signal (low confidence) duckdb / vortex-file-compressed (0.838x ✅, 4↑ 0↓)
duckdb / vortex-compact (1.017x ➖, 0↑ 0↓)
duckdb / parquet (1.020x ➖, 0↑ 0↓)
Full attributed analysis
|
File Sizes: Statistical and Population GeneticsNo file size changes detected. |
Benchmarks: TPC-H SF=10 on S3Verdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (0.990x ➖, 0↑ 0↓)
datafusion / vortex-compact (1.073x ➖, 1↑ 3↓)
datafusion / parquet (1.169x ➖, 0↑ 3↓)
duckdb / vortex-file-compressed (1.018x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.996x ➖, 0↑ 0↓)
duckdb / parquet (1.028x ➖, 0↑ 0↓)
Full attributed analysis
|
Benchmarks: Clickbench on NVMEVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (1.177x ❌, 0↑ 37↓)
datafusion / parquet (1.161x ❌, 0↑ 36↓)
duckdb / vortex-file-compressed (1.174x ❌, 1↑ 35↓)
duckdb / parquet (1.147x ❌, 0↑ 36↓)
duckdb / duckdb (1.100x ❌, 0↑ 24↓)
Full attributed analysis
|
File Sizes: Clickbench on NVMEFile Size Changes (1 files changed, -0.0% overall, 0↑ 1↓)
Totals:
|
Benchmarks: CompressionVortex (geomean): 1.018x ➖ unknown / unknown (1.026x ➖, 0↑ 13↓)
|
Benchmarks: Random AccessVortex (geomean): 0.909x ➖ unknown / unknown (0.938x ➖, 7↑ 0↓)
|
|
|
||
| // Set the validity pointer for the vector to external data, and store the buffer in auxiliary | ||
| // to keep it alive. This enables zero-copy export of validity masks. | ||
| void duckdb_vx_vector_set_validity_data(duckdb_vector ffi_vector, void *validity_ptr, idx_t capacity, |
There was a problem hiding this comment.
If validity_ptr points to buffer, just pass the buffer
| // Same hack for ValidityMask: access protected fields via inheritance. | ||
| class ExternalValidityMask : public ValidityMask { | ||
| public: | ||
| inline void SetExternal(validity_t *ptr, idx_t cap, |
There was a problem hiding this comment.
Same here, pass just the buffer and derive ptr from it
| *ext_buf, reinterpret_cast<TemplatedValidityData<validity_t> *>(ext_buf->get())); | ||
|
|
||
| // Set validity_mask, capacity, and validity_data (which keeps the buffer alive). | ||
| ext_validity->SetExternal(reinterpret_cast<validity_t *>(validity_ptr), capacity, |
There was a problem hiding this comment.
Technically this will slice the class to base's validity, but as derived class doesn't have any members, it's fine. Worth adding a comment
…ty-export Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk> # Conflicts: # vortex-duckdb/src/exporter/constant.rs # vortex-duckdb/src/exporter/vector.rs
| auto &validity = dvector->GetValidity(); | ||
| // ExternalValidityMask adds no members, so this reinterpret_cast is a safe | ||
| // "downcast" that only exposes access to ValidityMask's protected fields. | ||
| auto ext_validity = reinterpret_cast<vortex::ExternalValidityMask *>(&validity); |
There was a problem hiding this comment.
should be a static_cast since we're downcasting to derived type
| match self.value.as_ref() { | ||
| None => { | ||
| // TODO(ngates): would be good if DuckDB supported constant null vectors. | ||
| vector.set_all_false_validity(); |
There was a problem hiding this comment.
set_all_false_validity is more optimal
Summary
Closes: #000
Testing