Conversation
Signed-off-by: Mikhail Kot <mikhail@spiraldb.com>
Signed-off-by: Mikhail Kot <mikhail@spiraldb.com>
Merging this PR will degrade performance by 18.37%
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ❌ | WallTime | words_gather_dispatch_avx512[1024] |
9 ns | 35 ns | -74.29% |
| ❌ | WallTime | arrow_checked_add_u32_neon[16384] |
13.5 µs | 20.3 µs | -33.4% |
| ⚡ | WallTime | arrow_checked_add_u32_avx2[16384] |
21.4 µs | 17.7 µs | +21.16% |
| ⚡ | WallTime | scalar_subtract_neon |
13.4 µs | 11.8 µs | +13.61% |
| ⚡ | Simulation | allocate_drop_arrow[0] |
456.9 ns | 402.7 ns | +13.45% |
| ⚡ | WallTime | mul_u32_nonnull_avx512 |
6.3 µs | 5.7 µs | +10.62% |
Tip
Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.
Comparing myrrc/duckdb-remove-eq-hack (515861a) with develop (3e2b65c)
Footnotes
-
1766 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩
Polar Signals Profiling ResultsLatest Run
Powered by Polar Signals Cloud |
Benchmarks: PolarSignals Profiling 📖Commits: PR datafusion / vortex-file-compressed / ns (1.007x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: TPC-H SF=1 on NVME 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.004x ➖, 0↑ 0↓)
datafusion / parquet / ns (1.002x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (0.992x ➖, 3↑ 3↓)
duckdb / parquet / ns (0.992x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: FineWeb NVMe 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.046x ➖, 0↑ 1↓)
datafusion / parquet / ns (1.001x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (1.100x ❌, 1↑ 6↓)
duckdb / parquet / ns (1.004x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: Clickbench Sorted on NVME 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (0.978x ➖, 1↑ 0↓)
datafusion / parquet / ns (1.015x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (1.007x ➖, 0↑ 0↓)
duckdb / parquet / ns (1.052x ➖, 0↑ 2↓)
File Size Changes (100 files changed, -0.0% overall, 45↑ 55↓)
Totals:
|
Benchmarks: TPC-H SF=10 on NVME 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (0.990x ➖, 0↑ 0↓)
datafusion / parquet / ns (0.989x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (0.950x ➖, 5↑ 0↓)
duckdb / parquet / ns (0.997x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: FineWeb S3 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.148x ➖, 0↑ 3↓)
datafusion / parquet / ns (1.201x ➖, 0↑ 3↓)
duckdb / vortex-file-compressed / ns (0.927x ➖, 2↑ 0↓)
duckdb / parquet / ns (1.051x ➖, 0↑ 0↓)
|
Benchmarks: Clickbench on NVME 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (0.998x ➖, 0↑ 0↓)
datafusion / parquet / ns (0.999x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (1.002x ➖, 4↑ 4↓)
duckdb / parquet / ns (1.006x ➖, 1↑ 2↓)
No file size changes detected. |
Benchmarks: TPC-DS SF=1 on NVME 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.003x ➖, 0↑ 0↓)
datafusion / parquet / ns (1.000x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (1.032x ➖, 6↑ 15↓)
duckdb / parquet / ns (1.007x ➖, 1↑ 4↓)
No file size changes detected. |
Benchmarks: Statistical and Population Genetics 📖Commits: PR How to read Verdict and Engines
duckdb / vortex-file-compressed / ns (0.999x ➖, 0↑ 0↓)
duckdb / parquet / ns (0.995x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: TPC-H SF=1 on S3 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.367x ❌, 0↑ 13↓)
datafusion / parquet / ns (1.052x ➖, 1↑ 2↓)
duckdb / vortex-file-compressed / ns (1.178x ➖, 1↑ 6↓)
duckdb / parquet / ns (1.064x ➖, 0↑ 0↓)
|
We currenly have a hack which reports Eq filters as not pushed. This is due to a
duckdb optimizer bug which rewrites delim joins to ordinary joins which leads to
massive regressions in tpch 17 et. al.
However, there are queries like tpch q15 which don't have Eq. If we learn to
cast Temporal types into each other (up the stack), all filters get pushed, and
we get the regression again.
This change replaces the hack with a slightly less hack - now all single-column
filters or constant filters are reported as not pushed. Duckdb then converts
them to table filters and hands them back to vortex in global state
initialization, so we don't do a double evaluation.