Validity casting doesn't hide usage of execution context#7710
Validity casting doesn't hide usage of execution context#7710robert3005 merged 9 commits intodevelopfrom
Conversation
|
We need to ensure that reduce rule exit early if they cannot match and do little more unless we know they match, since we try to apply them so often. |
Merging this PR will degrade performance by 24.87%
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ⚡ | WallTime | runend[10M_i32_runlen_1000] |
133.1 µs | 96.3 µs | +38.3% |
| ⚡ | WallTime | dynamic_dispatch_f32[10M] |
165.9 µs | 113.7 µs | +45.95% |
| ⚡ | Simulation | take_indices[(1000, 256)] |
38.4 µs | 34.6 µs | +10.91% |
| ⚡ | Simulation | null_count_run_end[(10000, 1024, 0.5)] |
35.4 µs | 32.1 µs | +10.39% |
| ⚡ | Simulation | null_count_run_end[(10000, 1024, 0.1)] |
35.4 µs | 32.1 µs | +10.47% |
| ⚡ | Simulation | null_count_run_end[(10000, 256, 0.5)] |
37 µs | 33.6 µs | +10.09% |
| ❌ | Simulation | new_bp_prim_test_between[i64, 32768] |
177.4 µs | 236.1 µs | -24.87% |
| ⚡ | Simulation | bitwise_not_vortex_buffer_mut[128] |
275.3 ns | 246.1 ns | +11.85% |
Comparing rk/validitycast (55d1554) with develop (e2062a7)
77d698b to
9298f56
Compare
|
The thing that's extremely repetitive here is |
Signed-off-by: Robert Kruszewski <github@robertk.io>
joseph-isaacs
left a comment
There was a problem hiding this comment.
Lets run benchmarks first
44dd940 to
74f36ac
Compare
Benchmarks: Clickbench on NVMEVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (0.998x ➖, 0↑ 0↓)
datafusion / parquet (1.001x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (0.997x ➖, 2↑ 1↓)
duckdb / parquet (0.992x ➖, 0↑ 0↓)
duckdb / duckdb (0.982x ➖, 2↑ 1↓)
Full attributed analysis
|
Benchmarks: TPC-DS SF=1 on NVMEVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (0.987x ➖, 0↑ 2↓)
datafusion / vortex-compact (0.970x ➖, 4↑ 0↓)
datafusion / parquet (0.980x ➖, 2↑ 0↓)
duckdb / vortex-file-compressed (0.981x ➖, 4↑ 0↓)
duckdb / vortex-compact (0.969x ➖, 2↑ 0↓)
duckdb / parquet (0.991x ➖, 0↑ 0↓)
duckdb / duckdb (0.976x ➖, 1↑ 0↓)
Full attributed analysis
|
Benchmarks: Statistical and Population GeneticsVerdict: No clear signal (low confidence) duckdb / vortex-file-compressed (1.039x ➖, 0↑ 1↓)
duckdb / vortex-compact (1.009x ➖, 0↑ 0↓)
duckdb / parquet (1.014x ➖, 0↑ 0↓)
Full attributed analysis
|
Benchmarks: TPC-H SF=1 on S3Verdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (0.845x ➖, 4↑ 0↓)
datafusion / vortex-compact (0.964x ➖, 0↑ 0↓)
datafusion / parquet (0.963x ➖, 0↑ 1↓)
duckdb / vortex-file-compressed (0.915x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.974x ➖, 0↑ 0↓)
duckdb / parquet (0.968x ➖, 0↑ 0↓)
Full attributed analysis
|
Benchmarks: FineWeb NVMeVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (1.032x ➖, 0↑ 0↓)
datafusion / vortex-compact (1.066x ➖, 0↑ 3↓)
datafusion / parquet (1.033x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.035x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.011x ➖, 0↑ 0↓)
duckdb / parquet (1.029x ➖, 0↑ 1↓)
Full attributed analysis
|
Benchmarks: TPC-H SF=1 on NVMEVerdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (0.943x ➖, 0↑ 0↓)
datafusion / vortex-compact (0.947x ➖, 1↑ 0↓)
datafusion / parquet (0.970x ➖, 0↑ 2↓)
datafusion / arrow (0.943x ➖, 2↑ 0↓)
duckdb / vortex-file-compressed (0.953x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.950x ➖, 0↑ 0↓)
duckdb / parquet (0.988x ➖, 0↑ 1↓)
duckdb / duckdb (0.968x ➖, 1↑ 0↓)
Full attributed analysis
|
Benchmarks: PolarSignals ProfilingVortex (geomean): 0.983x ➖ datafusion / vortex-file-compressed (0.983x ➖, 1↑ 0↓)
|
Benchmarks: FineWeb S3Verdict: No clear signal (low confidence) datafusion / vortex-file-compressed (0.982x ➖, 0↑ 0↓)
datafusion / vortex-compact (0.980x ➖, 0↑ 0↓)
datafusion / parquet (0.966x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (0.992x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.026x ➖, 0↑ 1↓)
duckdb / parquet (0.992x ➖, 0↑ 0↓)
Full attributed analysis
|
Benchmarks: TPC-H SF=10 on NVMEVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (0.985x ➖, 2↑ 0↓)
datafusion / vortex-compact (1.001x ➖, 0↑ 0↓)
datafusion / parquet (0.991x ➖, 0↑ 0↓)
datafusion / arrow (0.982x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.002x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.005x ➖, 0↑ 0↓)
duckdb / parquet (0.996x ➖, 0↑ 0↓)
duckdb / duckdb (0.997x ➖, 0↑ 0↓)
Full attributed analysis
|
Benchmarks: TPC-H SF=10 on S3Verdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (0.868x ➖, 1↑ 1↓)
datafusion / vortex-compact (0.971x ➖, 1↑ 0↓)
datafusion / parquet (0.970x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (0.964x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.941x ➖, 0↑ 0↓)
duckdb / parquet (0.960x ➖, 0↑ 0↓)
Full attributed analysis
|
Polar Signals Profiling ResultsLatest Run
Powered by Polar Signals Cloud |
File Sizes: PolarSignals ProfilingNo file size changes detected. |
File Sizes: FineWeb NVMeNo file size changes detected. |
File Sizes: TPC-H SF=1 on NVMENo file size changes detected. |
File Sizes: TPC-DS SF=1 on NVMENo file size changes detected. |
File Sizes: Statistical and Population GeneticsNo file size changes detected. |
File Sizes: TPC-H SF=10 on NVMENo file size changes detected. |
File Sizes: Clickbench on NVMEFile Size Changes (1 files changed, -0.0% overall, 0↑ 1↓)
Totals:
|
Casting validity correctly advertises that it might do compute by requiring
context.
We split the logic of casting between CastReduce rules which can handle all
NonNullalbe -> Nullable and Nullable -> NonNullable casts if stats have been
calculated and CastKernels which need to handle full generality of casts, in
practice Nullable to NonNullable casts
Signed-off-by: Robert Kruszewski github@robertk.io