Conversation
Merging this PR will degrade performance by 15.51%
Performance Changes
Comparing Footnotes
|
|
Seems like there are some things that needed to be inlined in here? related to bitpacking and between eval |
Polar Signals Profiling ResultsLatest Run
Previous Runs (2)
Powered by Polar Signals Cloud |
Benchmarks: PolarSignals ProfilingVortex (geomean): 1.030x ➖ datafusion / vortex-file-compressed (1.030x ➖, 0↑ 1↓)
|
Benchmarks: TPC-H SF=1 on NVMEVerdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (0.996x ➖, 1↑ 0↓)
datafusion / vortex-compact (1.010x ➖, 0↑ 0↓)
datafusion / parquet (0.982x ➖, 1↑ 0↓)
datafusion / arrow (0.987x ➖, 1↑ 0↓)
duckdb / vortex-file-compressed (0.900x ✅, 9↑ 0↓)
duckdb / vortex-compact (0.919x ➖, 5↑ 0↓)
duckdb / parquet (0.968x ➖, 5↑ 3↓)
duckdb / duckdb (0.911x ➖, 6↑ 0↓)
Full attributed analysis
|
Benchmarks: FineWeb NVMeVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (0.874x ✅, 7↑ 1↓)
datafusion / vortex-compact (0.919x ➖, 3↑ 1↓)
datafusion / parquet (0.929x ➖, 2↑ 0↓)
duckdb / vortex-file-compressed (0.825x ✅, 8↑ 0↓)
duckdb / vortex-compact (0.884x ✅, 4↑ 0↓)
duckdb / parquet (0.937x ➖, 1↑ 0↓)
Full attributed analysis
|
d3bb4ef to
5be4b29
Compare
Benchmarks: TPC-DS SF=1 on NVMEVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (0.939x ➖, 23↑ 0↓)
datafusion / vortex-compact (1.005x ➖, 0↑ 0↓)
datafusion / parquet (0.903x ➖, 40↑ 1↓)
duckdb / vortex-file-compressed (1.019x ➖, 0↑ 1↓)
duckdb / vortex-compact (1.022x ➖, 1↑ 4↓)
duckdb / parquet (1.002x ➖, 0↑ 1↓)
duckdb / duckdb (1.032x ➖, 0↑ 10↓)
Full attributed analysis
|
Yeah, I'll double check any regressions for sure. |
Benchmarks: TPC-H SF=10 on NVMEVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (0.976x ➖, 0↑ 0↓)
datafusion / vortex-compact (0.939x ➖, 0↑ 0↓)
datafusion / parquet (0.925x ➖, 8↑ 0↓)
datafusion / arrow (0.941x ➖, 6↑ 0↓)
duckdb / vortex-file-compressed (0.914x ➖, 5↑ 0↓)
duckdb / vortex-compact (0.979x ➖, 1↑ 0↓)
duckdb / parquet (0.944x ➖, 0↑ 0↓)
duckdb / duckdb (0.998x ➖, 0↑ 0↓)
Full attributed analysis
|
Benchmarks: TPC-H SF=1 on S3Verdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (0.908x ➖, 5↑ 1↓)
datafusion / vortex-compact (1.208x ➖, 0↑ 7↓)
datafusion / parquet (1.041x ➖, 0↑ 1↓)
duckdb / vortex-file-compressed (1.049x ➖, 0↑ 2↓)
duckdb / vortex-compact (0.980x ➖, 0↑ 0↓)
duckdb / parquet (1.064x ➖, 0↑ 0↓)
Full attributed analysis
|
Benchmarks: FineWeb S3Verdict: No clear signal (low confidence) datafusion / vortex-file-compressed (1.054x ➖, 0↑ 1↓)
datafusion / vortex-compact (1.023x ➖, 0↑ 1↓)
datafusion / parquet (1.050x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (0.939x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.987x ➖, 0↑ 0↓)
duckdb / parquet (0.997x ➖, 0↑ 0↓)
Full attributed analysis
|
Benchmarks: Random AccessVortex (geomean): 0.931x ➖ unknown / unknown (1.001x ➖, 6↑ 15↓)
|
Benchmarks: Statistical and Population GeneticsVerdict: No clear signal (low confidence) duckdb / vortex-file-compressed (1.017x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.980x ➖, 1↑ 0↓)
duckdb / parquet (1.008x ➖, 0↑ 0↓)
Full attributed analysis
|
Benchmarks: TPC-H SF=10 on S3Verdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (0.933x ➖, 0↑ 0↓)
datafusion / vortex-compact (0.995x ➖, 0↑ 2↓)
datafusion / parquet (1.078x ➖, 0↑ 3↓)
duckdb / vortex-file-compressed (0.985x ➖, 1↑ 0↓)
duckdb / vortex-compact (0.963x ➖, 0↑ 0↓)
duckdb / parquet (0.989x ➖, 0↑ 1↓)
Full attributed analysis
|
Benchmarks: Clickbench on NVMEVerdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (0.883x ✅, 21↑ 0↓)
datafusion / parquet (0.898x ✅, 17↑ 0↓)
duckdb / vortex-file-compressed (0.953x ➖, 6↑ 1↓)
duckdb / parquet (0.976x ➖, 2↑ 0↓)
duckdb / duckdb (0.980x ➖, 2↑ 0↓)
Full attributed analysis
|
Benchmarks: CompressionVortex (geomean): 1.012x ➖ unknown / unknown (1.028x ➖, 0↑ 13↓)
|
6b439f7 to
1ffe423
Compare
7647ccd to
6f17616
Compare
Remove #[inline] from private, pub(crate), and inner functions where the compiler already has full visibility, and from large (>20 line) functions where code bloat outweighs benefit. Add #[inline] to BitBuffer operator trait impls (BitOr, BitAnd, Not, BitXor) — non-generic impls on a concrete type that are otherwise opaque cross-crate with LTO disabled. Signed-off-by: Alexander Droste <alexander.droste@protonmail.com>
6f17616 to
7e978b8
Compare
|
@connortsui20 I think the current regressions are flaky benchmarks. If you look at the benchmark dashboards you can see how they oscillate back and forth 10% over time. |
#[inline] for non-generic & public fns#[inline] annotations
Remove #[inline] from private, pub(crate), and inner functions where the compiler already has full visibility, and from large (>20 line) functions where code bloat outweighs benefit. Add #[inline] to BitBuffer operator trait impls (BitOr, BitAnd, Not, BitXor) — non-generic impls on a concrete type that are otherwise opaque cross-crate with LTO disabled. Signed-off-by: Alexander Droste <alexander.droste@protonmail.com>
Remove
#[inline]from private, pub(crate), and inner functions where the compiler already has full visibility, and from large (>20 line) functions.Add
#[inline]toBitBufferoperator trait impls (BitOr, BitAnd, Not, BitXor) - non-generic impls on a concrete type that are otherwise opaque cross-crate with LTO disabled.