Conversation
1c091b1 to
c8699a6
Compare
Merging this PR will degrade performance by 10.6%
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ⚡ | Simulation | take_search_chunked[(0.1, 0.5)] |
2.4 ms | 2.1 ms | +14.49% |
| ⚡ | Simulation | take_search_chunked[(0.01, 0.5)] |
2 ms | 1.7 ms | +18.64% |
| ⚡ | Simulation | take_search[(0.01, 1.0)] |
3.3 ms | 2.5 ms | +28.78% |
| ⚡ | Simulation | take_search_chunked[(0.005, 1.0)] |
3.7 ms | 3.1 ms | +20.18% |
| ⚡ | Simulation | take_search_chunked[(0.1, 1.0)] |
4.9 ms | 4.2 ms | +14.61% |
| ⚡ | Simulation | take_search[(0.1, 0.1)] |
458.5 µs | 385.2 µs | +19.01% |
| ⚡ | Simulation | take_search[(0.1, 0.5)] |
2.2 ms | 1.8 ms | +20.41% |
| ⚡ | Simulation | take_search_chunked[(0.005, 0.5)] |
1.9 ms | 1.5 ms | +20.07% |
| ⚡ | Simulation | take_search[(0.005, 0.5)] |
1.5 ms | 1.2 ms | +31.06% |
| ⚡ | Simulation | take_search_chunked[(0.01, 0.1)] |
408.4 µs | 346.2 µs | +17.97% |
| ⚡ | Simulation | take_search[(0.1, 1.0)] |
4.3 ms | 3.5 ms | +20.64% |
| ⚡ | Simulation | take_search_chunked[(0.005, 0.05)] |
200.4 µs | 169.1 µs | +18.5% |
| ⚡ | Simulation | take_search_chunked[(0.005, 0.1)] |
383.8 µs | 321.6 µs | +19.35% |
| ⚡ | Simulation | take_search_chunked[(0.1, 0.05)] |
279 µs | 247.7 µs | +12.62% |
| ⚡ | Simulation | take_search[(0.005, 0.05)] |
167.9 µs | 131.2 µs | +28.04% |
| ⚡ | Simulation | take_search[(0.01, 0.5)] |
1.6 ms | 1.3 ms | +28.6% |
| ⚡ | Simulation | take_search[(0.1, 0.05)] |
248.8 µs | 212.1 µs | +17.33% |
| ⚡ | Simulation | take_search_chunked[(0.01, 0.05)] |
213.1 µs | 181.8 µs | +17.19% |
| ⚡ | Simulation | take_search[(0.005, 1.0)] |
3.1 ms | 2.3 ms | +31.27% |
| ⚡ | Simulation | take_search[(0.005, 0.1)] |
320.1 µs | 246.9 µs | +29.64% |
| ... | ... | ... | ... | ... | ... |
ℹ️ Only the first 20 benchmarks are displayed. Go to the app to view all benchmarks.
Comparing adamg/aggregate-fn-array-uncompressed (2ac1bd9) with develop (903ee6c)
Footnotes
-
138 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
Previous Runs (1)
Powered by Polar Signals Cloud |
Benchmarks: PolarSignals ProfilingVortex (geomean): 1.091x ➖ datafusion / vortex-file-compressed (1.091x ➖, 0↑ 4↓)
|
File Sizes: PolarSignals ProfilingNo file size changes detected. |
Benchmarks: FineWeb NVMeVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (0.962x ➖, 2↑ 0↓)
datafusion / vortex-compact (0.971x ➖, 0↑ 0↓)
datafusion / parquet (0.969x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (0.979x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.012x ➖, 0↑ 2↓)
duckdb / parquet (0.953x ➖, 1↑ 0↓)
Full attributed analysis
|
File Sizes: FineWeb NVMeNo file size changes detected. |
Benchmarks: TPC-H SF=1 on NVMEVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (1.000x ➖, 0↑ 0↓)
datafusion / vortex-compact (1.000x ➖, 0↑ 0↓)
datafusion / parquet (1.000x ➖, 1↑ 1↓)
datafusion / arrow (0.984x ➖, 1↑ 0↓)
duckdb / vortex-file-compressed (1.005x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.003x ➖, 0↑ 0↓)
duckdb / parquet (1.016x ➖, 0↑ 1↓)
duckdb / duckdb (1.005x ➖, 0↑ 0↓)
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 (1.078x ➖, 0↑ 26↓)
datafusion / vortex-compact (1.060x ➖, 1↑ 10↓)
datafusion / parquet (1.066x ➖, 0↑ 16↓)
duckdb / vortex-file-compressed (1.064x ➖, 0↑ 21↓)
duckdb / vortex-compact (1.047x ➖, 0↑ 8↓)
duckdb / parquet (1.041x ➖, 0↑ 6↓)
duckdb / duckdb (1.064x ➖, 0↑ 19↓)
Full attributed analysis
|
File Sizes: TPC-DS SF=1 on NVMENo file size changes detected. |
Benchmarks: FineWeb S3Verdict: No clear signal (low confidence) datafusion / vortex-file-compressed (1.024x ➖, 0↑ 0↓)
datafusion / vortex-compact (0.704x ➖, 4↑ 0↓)
datafusion / parquet (1.085x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.113x ➖, 0↑ 1↓)
duckdb / vortex-compact (1.124x ➖, 0↑ 1↓)
duckdb / parquet (1.018x ➖, 0↑ 0↓)
Full attributed analysis
|
Benchmarks: Random AccessVortex (geomean): 0.967x ➖ unknown / unknown (0.990x ➖, 3↑ 0↓)
|
Benchmarks: Statistical and Population GeneticsVerdict: No clear signal (low confidence) duckdb / vortex-file-compressed (0.991x ➖, 1↑ 0↓)
duckdb / vortex-compact (1.024x ➖, 0↑ 0↓)
duckdb / parquet (1.017x ➖, 0↑ 0↓)
Full attributed analysis
|
File Sizes: Statistical and Population GeneticsNo file size changes detected. |
Benchmarks: Clickbench on NVMEVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (1.024x ➖, 0↑ 2↓)
datafusion / parquet (1.015x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.014x ➖, 0↑ 2↓)
duckdb / parquet (0.990x ➖, 1↑ 0↓)
duckdb / duckdb (1.020x ➖, 0↑ 1↓)
Full attributed analysis
|
File Sizes: Clickbench on NVMEFile Size Changes (1 files changed, -0.0% overall, 0↑ 1↓)
Totals:
|
Benchmarks: TPC-H SF=1 on S3Verdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (1.119x ➖, 0↑ 1↓)
datafusion / vortex-compact (1.091x ➖, 0↑ 2↓)
datafusion / parquet (0.977x ➖, 1↑ 0↓)
duckdb / vortex-file-compressed (0.921x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.924x ➖, 0↑ 0↓)
duckdb / parquet (0.959x ➖, 0↑ 0↓)
Full attributed analysis
|
Benchmarks: CompressionVortex (geomean): 1.002x ➖ unknown / unknown (0.982x ➖, 10↑ 3↓)
|
Benchmarks: TPC-H SF=10 on S3Verdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (1.030x ➖, 0↑ 0↓)
datafusion / vortex-compact (0.980x ➖, 1↑ 0↓)
datafusion / parquet (1.121x ➖, 0↑ 4↓)
duckdb / vortex-file-compressed (1.055x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.035x ➖, 0↑ 0↓)
duckdb / parquet (1.046x ➖, 0↑ 0↓)
Full attributed analysis
|
Benchmarks: TPC-H SF=10 on NVMEVerdict: No clear signal (low confidence) datafusion / vortex-file-compressed (1.043x ➖, 0↑ 0↓)
datafusion / vortex-compact (1.037x ➖, 0↑ 0↓)
datafusion / parquet (1.041x ➖, 0↑ 1↓)
datafusion / arrow (1.069x ➖, 0↑ 2↓)
duckdb / vortex-file-compressed (1.031x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.025x ➖, 0↑ 0↓)
duckdb / parquet (1.021x ➖, 0↑ 1↓)
duckdb / duckdb (1.021x ➖, 0↑ 0↓)
Full attributed analysis
|
File Sizes: TPC-H SF=10 on NVMENo file size changes detected. |
| 0 | ||
| } else { | ||
| let rebuilt = array.rebuild(ListViewRebuildMode::MakeExact)?; | ||
| super::uncompressed_size_in_bytes_u64(rebuilt.elements(), ctx)? |
There was a problem hiding this comment.
Can we import all those super:: methods
| /// Applies to all types and returns a non-null `u64`. Encoding kernels can return this aggregate | ||
| /// directly from metadata to avoid decoding arrays whose uncompressed size is known. | ||
| #[derive(Clone, Debug)] | ||
| pub struct UncompressedSizeInBytes; |
There was a problem hiding this comment.
So this is only buffers of the array and all children.
Are we sure we should not include metadata?
Maybe just justify why?
There was a problem hiding this comment.
I don't think we do now, and it should really be a rounding error right?
It also seems to be more of an implementation details and not the number execution engines care about.
Signed-off-by: Adam Gutglick <adam@spiraldb.com>
Signed-off-by: Adam Gutglick <adam@spiraldb.com>
0e19932 to
2ac1bd9
Compare
Summary
This stat turns out to be very useful for helping execution engines plan joins better, but its currently requires a full-decompression. This PR includes the basic structure for a new AggregateFn, including implementation for all canonical types.