perf: correctly try execute parent in the iterative child execute loop #7386
perf: correctly try execute parent in the iterative child execute loop #7386joseph-isaacs wants to merge 4 commits intodevelopfrom
Conversation
I believe this is a regression. A Filter(Slice(Ree)) is pretty common and would eagerly canonicalize its child preventing execute_parent kernels like RunEnd's FilterKernel from firing. This is an issue with dict encoding too. This commit executes its child one step so that execute_parent kernels may match. Signed-off-by: Alfonso Subiotto Marques <alfonso.subiotto@polarsignals.com>
Polar Signals Profiling ResultsLatest Run
Previous Runs (1)
Powered by Polar Signals Cloud |
Benchmarks: PolarSignals ProfilingVortex (geomean): 0.937x ➖ datafusion / vortex-file-compressed (0.937x ➖, 2↑ 0↓)
|
File Sizes: PolarSignals ProfilingNo file size changes detected. |
Benchmarks: TPC-H SF=1 on NVMEVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (1.014x ➖, 0↑ 0↓)
datafusion / vortex-compact (1.000x ➖, 0↑ 0↓)
datafusion / parquet (0.984x ➖, 1↑ 1↓)
datafusion / arrow (1.002x ➖, 0↑ 1↓)
duckdb / vortex-file-compressed (0.992x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.998x ➖, 0↑ 0↓)
duckdb / parquet (0.997x ➖, 3↑ 4↓)
duckdb / duckdb (0.998x ➖, 0↑ 0↓)
Full attributed analysis
|
File Sizes: TPC-H SF=1 on NVMENo file size changes detected. |
Benchmarks: FineWeb NVMeVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (1.021x ➖, 0↑ 1↓)
datafusion / vortex-compact (0.988x ➖, 0↑ 0↓)
datafusion / parquet (1.004x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.031x ➖, 0↑ 2↓)
duckdb / vortex-compact (1.003x ➖, 0↑ 0↓)
duckdb / parquet (1.002x ➖, 0↑ 0↓)
Full attributed analysis
|
File Sizes: FineWeb NVMeNo file size changes detected. |
Benchmarks: TPC-DS SF=1 on NVMEVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (0.996x ➖, 0↑ 0↓)
datafusion / vortex-compact (1.006x ➖, 0↑ 0↓)
datafusion / parquet (1.007x ➖, 0↑ 1↓)
duckdb / vortex-file-compressed (1.008x ➖, 1↑ 2↓)
duckdb / vortex-compact (1.001x ➖, 1↑ 1↓)
duckdb / parquet (1.003x ➖, 0↑ 0↓)
duckdb / duckdb (1.005x ➖, 1↑ 2↓)
Full attributed analysis
|
File Sizes: TPC-DS SF=1 on NVMENo file size changes detected. |
Benchmarks: TPC-H SF=10 on NVMEVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (0.997x ➖, 0↑ 0↓)
datafusion / vortex-compact (0.985x ➖, 0↑ 0↓)
datafusion / parquet (0.996x ➖, 0↑ 0↓)
datafusion / arrow (0.981x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (0.810x ✅, 18↑ 0↓)
duckdb / vortex-compact (0.823x ✅, 18↑ 0↓)
duckdb / parquet (0.935x ➖, 4↑ 0↓)
duckdb / duckdb (0.886x ✅, 12↑ 0↓)
Full attributed analysis
|
File Sizes: TPC-H SF=10 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.002x ➖, 2↑ 4↓)
datafusion / vortex-compact (0.940x ➖, 0↑ 1↓)
datafusion / parquet (0.813x ➖, 5↑ 0↓)
duckdb / vortex-file-compressed (0.970x ➖, 0↑ 1↓)
duckdb / vortex-compact (0.869x ➖, 2↑ 0↓)
duckdb / parquet (0.969x ➖, 0↑ 0↓)
Full attributed analysis
|
Benchmarks: FineWeb S3Verdict: No clear signal (low confidence) datafusion / vortex-file-compressed (1.008x ➖, 0↑ 1↓)
datafusion / vortex-compact (0.918x ➖, 1↑ 0↓)
datafusion / parquet (0.985x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (0.965x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.894x ➖, 1↑ 0↓)
duckdb / parquet (0.929x ➖, 0↑ 0↓)
Full attributed analysis
|
Benchmarks: Random AccessVortex (geomean): 0.910x ➖ unknown / unknown (1.008x ➖, 8↑ 15↓)
|
Benchmarks: Statistical and Population GeneticsVerdict: No clear signal (low confidence) duckdb / vortex-file-compressed (0.992x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.016x ➖, 0↑ 1↓)
duckdb / parquet (1.006x ➖, 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.959x ➖, 1↑ 0↓)
datafusion / vortex-compact (0.895x ➖, 6↑ 1↓)
datafusion / parquet (0.984x ➖, 1↑ 4↓)
duckdb / vortex-file-compressed (0.966x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.995x ➖, 0↑ 0↓)
duckdb / parquet (0.937x ➖, 0↑ 0↓)
Full attributed analysis
|
Benchmarks: Clickbench on NVMEVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (0.947x ➖, 4↑ 0↓)
datafusion / parquet (0.944x ➖, 2↑ 0↓)
duckdb / vortex-file-compressed (0.965x ➖, 3↑ 0↓)
duckdb / parquet (0.968x ➖, 0↑ 0↓)
duckdb / duckdb (1.002x ➖, 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.005x ➖ unknown / unknown (1.015x ➖, 0↑ 5↓)
|
|
|
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Merging this PR will improve performance by 27.78%
Performance Changes
Comparing Footnotes
|
I believe this is a regression. A Filter(Slice(Ree)) is pretty common and
would eagerly canonicalize its child preventing execute_parent kernels like
RunEnd's FilterKernel from firing. This is an issue with dict encoding too.
This commit executes its child one step so that execute_parent kernels may
match.
Signed-off-by: Alfonso Subiotto Marques alfonso.subiotto@polarsignals.com<!--
Thank you for submitting a pull request! We appreciate your time and effort.
Please make sure to provide enough information so that we can review your pull
request. The Summary and Testing sections below contain guidance on what to
include.
-->
Summary
Closes: #000
Testing