Conversation
Polar Signals Profiling ResultsLatest Run
Powered by Polar Signals Cloud |
Benchmarks: PolarSignals ProfilingVortex (geomean): 0.896x ✅ datafusion / vortex-file-compressed (0.896x ✅, 5↑ 0↓)
|
File Sizes: PolarSignals ProfilingNo file size changes detected. |
Benchmarks: FineWeb NVMeVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (1.031x ➖, 0↑ 2↓)
datafusion / vortex-compact (0.999x ➖, 0↑ 0↓)
datafusion / parquet (1.014x ➖, 0↑ 1↓)
duckdb / vortex-file-compressed (1.026x ➖, 0↑ 1↓)
duckdb / vortex-compact (1.001x ➖, 0↑ 0↓)
duckdb / parquet (0.990x ➖, 0↑ 0↓)
Full attributed analysis
|
File Sizes: FineWeb NVMeNo file size changes detected. |
Benchmarks: TPC-H SF=1 on NVMEVerdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (1.143x ❌, 0↑ 20↓)
datafusion / vortex-compact (1.135x ❌, 0↑ 17↓)
datafusion / parquet (1.113x ❌, 0↑ 9↓)
datafusion / arrow (1.186x ❌, 0↑ 19↓)
duckdb / vortex-file-compressed (1.120x ❌, 0↑ 16↓)
duckdb / vortex-compact (1.111x ❌, 0↑ 14↓)
duckdb / parquet (1.036x ➖, 2↑ 4↓)
duckdb / duckdb (1.114x ❌, 0↑ 13↓)
Full attributed analysis
|
File Sizes: TPC-H SF=1 on NVMENo file size changes detected. |
Benchmarks: TPC-DS SF=1 on NVMEVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (0.991x ➖, 0↑ 0↓)
datafusion / vortex-compact (1.000x ➖, 0↑ 0↓)
datafusion / parquet (1.006x ➖, 0↑ 2↓)
duckdb / vortex-file-compressed (0.984x ➖, 3↑ 0↓)
duckdb / vortex-compact (0.981x ➖, 0↑ 0↓)
duckdb / parquet (0.993x ➖, 1↑ 0↓)
duckdb / duckdb (0.969x ➖, 7↑ 1↓)
Full attributed analysis
|
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.001x ➖, 1↑ 6↓)
datafusion / vortex-compact (0.886x ➖, 6↑ 2↓)
datafusion / parquet (0.794x ➖, 7↑ 1↓)
duckdb / vortex-file-compressed (0.985x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.041x ➖, 0↑ 0↓)
duckdb / parquet (1.003x ➖, 0↑ 1↓)
Full attributed analysis
|
Benchmarks: TPC-H SF=10 on NVMEVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (0.992x ➖, 0↑ 0↓)
datafusion / vortex-compact (1.001x ➖, 0↑ 0↓)
datafusion / parquet (1.024x ➖, 0↑ 1↓)
datafusion / arrow (1.042x ➖, 0↑ 1↓)
duckdb / vortex-file-compressed (0.996x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.026x ➖, 0↑ 3↓)
duckdb / parquet (1.003x ➖, 1↑ 1↓)
duckdb / duckdb (1.176x ❌, 0↑ 20↓)
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 (0.964x ➖, 0↑ 0↓)
datafusion / vortex-compact (0.902x ➖, 1↑ 0↓)
datafusion / parquet (0.856x ➖, 1↑ 0↓)
duckdb / vortex-file-compressed (1.019x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.031x ➖, 0↑ 0↓)
duckdb / parquet (0.965x ➖, 0↑ 0↓)
Full attributed analysis
|
Benchmarks: Statistical and Population GeneticsVerdict: No clear signal (low confidence) duckdb / vortex-file-compressed (1.003x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.003x ➖, 0↑ 0↓)
duckdb / parquet (0.999x ➖, 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 (1.047x ➖, 3↑ 5↓)
datafusion / vortex-compact (0.937x ➖, 2↑ 0↓)
datafusion / parquet (1.038x ➖, 1↑ 3↓)
duckdb / vortex-file-compressed (1.002x ➖, 1↑ 0↓)
duckdb / vortex-compact (0.987x ➖, 0↑ 0↓)
duckdb / parquet (0.967x ➖, 0↑ 1↓)
Full attributed analysis
|
Benchmarks: Clickbench on NVMEVerdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (1.001x ➖, 1↑ 1↓)
datafusion / parquet (1.000x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (0.949x ➖, 13↑ 1↓)
duckdb / parquet (0.893x ✅, 21↑ 0↓)
duckdb / duckdb (0.976x ➖, 0↑ 1↓)
Full attributed analysis
|
File Sizes: Clickbench on NVMEFile Size Changes (1 files changed, -0.0% overall, 0↑ 1↓)
Totals:
|
Benchmarks: CompressionVortex (geomean): 1.011x ➖ unknown / unknown (1.005x ➖, 0↑ 3↓)
|
Benchmarks: Random AccessVortex (geomean): 0.910x ➖ unknown / unknown (0.996x ➖, 7↑ 7↓)
|
|
|
||
| // 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
| buffer_ptr<ValidityBuffer> keeper) { | ||
| validity_mask = ptr; | ||
| capacity = cap; | ||
| validity_data = std::move(keeper); |
There was a problem hiding this comment.
I don't think this is right as TemplatedValidityMask(V* ptr, idx_t capacity) constructor sets the pointer but doesn't change validity_data, so these two aren't derived.
Summary
Closes: #000
Testing