perf: intern identifiers (array, layout, etc).#7412
Conversation
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
09804cc to
331dd86
Compare
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk> # Conflicts: # vortex-layout/src/layouts/dict/reader.rs
Merging this PR will degrade performance by 31.94%
Performance Changes
Comparing Footnotes
|
Polar Signals Profiling ResultsLatest Run
Previous Runs (4)
Powered by Polar Signals Cloud |
Benchmarks: PolarSignals ProfilingVortex (geomean): 0.957x ➖ datafusion / vortex-file-compressed (0.957x ➖, 1↑ 0↓)
|
File Sizes: PolarSignals ProfilingNo file size changes detected. |
Benchmarks: TPC-H SF=1 on NVMEVerdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (1.020x ➖, 0↑ 1↓)
datafusion / vortex-compact (1.028x ➖, 0↑ 1↓)
datafusion / parquet (1.008x ➖, 1↑ 4↓)
datafusion / arrow (0.987x ➖, 1↑ 1↓)
duckdb / vortex-file-compressed (1.012x ➖, 0↑ 1↓)
duckdb / vortex-compact (1.012x ➖, 0↑ 0↓)
duckdb / parquet (0.989x ➖, 5↑ 3↓)
duckdb / duckdb (0.993x ➖, 1↑ 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.068x ➖, 0↑ 3↓)
datafusion / vortex-compact (1.021x ➖, 0↑ 1↓)
datafusion / parquet (1.007x ➖, 0↑ 1↓)
duckdb / vortex-file-compressed (1.033x ➖, 0↑ 1↓)
duckdb / vortex-compact (1.005x ➖, 0↑ 1↓)
duckdb / parquet (1.000x ➖, 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 (1.015x ➖, 0↑ 2↓)
datafusion / vortex-compact (1.000x ➖, 0↑ 0↓)
datafusion / parquet (1.001x ➖, 0↑ 1↓)
duckdb / vortex-file-compressed (0.993x ➖, 2↑ 1↓)
duckdb / vortex-compact (0.994x ➖, 2↑ 1↓)
duckdb / parquet (0.992x ➖, 1↑ 0↓)
duckdb / duckdb (0.996x ➖, 1↑ 1↓)
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 (1.002x ➖, 0↑ 0↓)
datafusion / vortex-compact (1.009x ➖, 0↑ 0↓)
datafusion / parquet (1.003x ➖, 0↑ 0↓)
datafusion / arrow (1.004x ➖, 1↑ 0↓)
duckdb / vortex-file-compressed (1.005x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.002x ➖, 0↑ 0↓)
duckdb / parquet (1.007x ➖, 0↑ 0↓)
duckdb / duckdb (0.996x ➖, 0↑ 0↓)
Full attributed analysis
|
Benchmarks: TPC-H SF=1 on S3Verdict: No clear signal (environment too noisy confidence) datafusion / vortex-file-compressed (1.026x ➖, 0↑ 4↓)
datafusion / vortex-compact (0.948x ➖, 3↑ 3↓)
datafusion / parquet (1.045x ➖, 0↑ 3↓)
duckdb / vortex-file-compressed (1.074x ➖, 0↑ 2↓)
duckdb / vortex-compact (1.061x ➖, 0↑ 1↓)
duckdb / parquet (1.026x ➖, 0↑ 1↓)
Full attributed analysis
|
File Sizes: TPC-H SF=10 on NVMENo file size changes detected. |
Benchmarks: FineWeb S3Verdict: No clear signal (low confidence) datafusion / vortex-file-compressed (1.128x ➖, 0↑ 3↓)
datafusion / vortex-compact (0.896x ➖, 1↑ 0↓)
datafusion / parquet (0.952x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (0.956x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.930x ➖, 0↑ 0↓)
duckdb / parquet (0.969x ➖, 0↑ 0↓)
Full attributed analysis
|
Benchmarks: Statistical and Population GeneticsVerdict: No clear signal (low confidence) duckdb / vortex-file-compressed (1.004x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.000x ➖, 0↑ 0↓)
duckdb / parquet (0.989x ➖, 0↑ 0↓)
Full attributed analysis
|
| pub const ID: &'static str = "vortex.alp"; | ||
|
|
||
| /// Returns the cached [`ArrayId`] for this encoding. | ||
| pub fn array_id() -> ArrayId { |
There was a problem hiding this comment.
Any reason we need the wrapping function?
There was a problem hiding this comment.
where else do we put the static either here or it global, (you cannot have in an impl block)
We use id for scalar_fns, array and layouts. This we used to match rules among other things.
This PR replace Arc ID with interned str (u32) id.