You are viewing a plain text version of this content. The canonical link for it is here.
Posted to github@datafusion.apache.org by "jayzhan211 (via GitHub)" <gi...@apache.org> on 2026/10/24 08:39:31 UTC
[PR] perf: bound work over dictionary values by the batch's row count [datafusion]
jayzhan211 opened a new pull request, #26703:
URL: https://github.com/apache/datafusion/pull/26703
## Which issue does this PR close?
- Part of #26696.
## Rationale for this change
Batches often carry a dictionary with far more values than rows: each `batch_size` slice of a GROUP BY's output keeps every group's value, and repartitioning and filtering keep the whole dictionary too. Code that processes every dictionary value then does work proportional to the dictionary, not the batch, so queries slow down as the group count grows.
On ClickBench `hits_partitioned` with `datafusion.execution.parquet.enable_rle_to_dictionary = true`:
```sql
SELECT lower(s), c FROM (
SELECT "SearchPhrase" s, COUNT(*) c FROM hits WHERE "SearchPhrase" <> '' GROUP BY s
) ORDER BY c DESC LIMIT 10;
```
takes 12581 ms on main and 1019 ms with this PR: `lower` runs over every group's value once for each 8192-row output slice. Hashing has the same problem: the hash repartition after a partial aggregate hashes every group's value for each slice (#26696).
## What changes are included in this PR?
Code that processes every value of a dictionary now handles at most `MAX_DICTIONARY_VALUES_PER_ROW` (8) values per row. Past that, it first takes the values the rows reference (`take(values, keys)` with keys `0..len`), which costs O(rows).
- `datafusion_common::utils::map_dictionary_values(array, f)` applies `f` to a dictionary's values within that bound. The string functions that keep dictionaries (`ascii`, `btrim`, `ltrim`, `rtrim`, `lower`/`upper`, `character_length`, `initcap`, `reverse`), Spark `hex`, and `array_agg`'s payload compaction use it instead of each calling `dictionary.with_values(f(values))`.
- Dictionary hashing (`hash_dictionary`, `hash_dictionary_with_child_hashing`) applies the same bound.
- `clippy.toml` disallows calling `with_values` directly, so new code goes through the helper. `get_field` keeps a direct call because it only picks a child column.
The threshold comes from the `with_hashes` benchmark. Just above 8 values per row, compacting before hashing is already faster than hashing every value: 0.56x for short strings, 0.60x for `Int64` and 0.30x for 64-byte strings. At 16 values per row it is 0.13x to 0.31x. Below the threshold the code path is unchanged.
#24588 proposes evaluating opt-in functions once per distinct value in `ScalarFunctionExpr` and keeps the per-function dictionary arms. This PR bounds the cost of those arms and of hashing, so the two don't conflict.
## Benchmarks
ClickBench `hits_partitioned`, `enable_rle_to_dictionary = true`, 12 partitions, `release-nonlto`, minimum over 3 to 6 interleaved rounds (ms), same results on both:
| query | main | this PR |
|---|---|---|
| `lower` over a dictionary GROUP BY (the query above) | 12581 | 1019 |
| GROUP BY `"SearchPhrase"` (#26696) | 1194 | 867 |
| GROUP BY `arrow_cast("SearchPhrase", 'Utf8')` | 463 | 476 |
| `MAX(lower("SearchPhrase"))` | 634 | 631 |
| GROUP BY `"MobilePhoneModel"` (low cardinality) | 123 | 125 |
| `MAX(lower("MobilePhoneModel"))` | 160 | 159 |
The rest of the #26696 gap (867 ms vs 463 ms for `Utf8` keys) is in arrow's `concat_dictionaries`, which the repartition coalescer uses, and in the general cost of dictionary group keys (#24822).
`with_hashes`, 8192-row slices of a dictionary with one value per row of the full array, median of 5 interleaved runs (Β΅s). Only `dictionary_sliced` is added to the benchmark; the threshold cases were run locally:
| case | main | this PR |
|---|---|---|
| `dictionary_sliced`: 10 values per row | 70.5 | 39.7 |
| short strings, 8 values per row (unchanged path) | 67.7 | 67.9 |
| short strings, just over 8 values per row | 64.9 | 36.1 |
| `Int64`, just over 8 values per row | 19.3 | 11.5 |
| 64-byte strings, just over 8 values per row | 180.2 | 53.6 |
| short strings, 16 values per row | 116.4 | 35.4 |
| `Int64`, 16 values per row | 34.8 | 10.7 |
| 64-byte strings, 16 values per row | 362.5 | 48.2 |
The existing `dictionary_utf8_int32` cases (100 values per batch) take the unchanged path and stay within noise.
## What is the testing strategy for this PR?
- `dictionary.slt`: a GROUP BY with `batch_size = 1` makes every output slice carry many more dictionary values than rows. The test compares each function above on the grouped dictionary with the same function on the decoded value, including a NULL group, and checks the result stays a dictionary. It also goes through the hash repartition of the partial aggregate's slices.
- Unit tests: `create_hashes_for_dict_slices_with_more_values_than_rows` (single and multi-column hashes of slices with null keys and null values match the unsliced hashes) and `map_dictionary_values_bounds_values_per_row`.
- Benchmark: the `dictionary_sliced` case in `datafusion/common/benches/with_hashes.rs`.
## Are there any user-facing changes?
No behavior changes. `datafusion_common::utils` gains `map_dictionary_values` and `MAX_DICTIONARY_VALUES_PER_ROW`.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: bound work over dictionary values by the batch's row count [datafusion]
Posted by "adriangbot (via GitHub) via github" <gi...@datafusion.apache.org>.
adriangbot commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6703644721
π€ Benchmark running (GKE) | [trigger](https://github.com/apache/datafusion/pull/26703#issuecomment-6703628936)
**Instance:** `c4a-highmem-16` (12 vCPU / 65 GiB) | `Linux bench-c6703628936-4586-4kwhn 6.12.105+ #1 SMP Sat Sep 19 07:55:25 UTC 2026 aarch64 GNU/Linux`
<details><summary>CPU Details (lscpu)</summary>
```
Architecture: aarch64
CPU op-mode(s): 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Vendor ID: ARM
Model name: Neoverse-V2
Model: 1
Thread(s) per core: 1
Core(s) per cluster: 16
Socket(s): -
Cluster(s): 1
Stepping: r0p1
BogoMIPS: 2000.00
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache: 1 MiB (16 instances)
L1i cache: 1 MiB (16 instances)
L2 cache: 32 MiB (16 instances)
L3 cache: 80 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-15
Vulnerability Gather data sampling: Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1: Mitigation; __user pointer sanitization
Vulnerability Spectre v2: Mitigation; CSV2, BHB
Vulnerability Srbds: Not affected
Vulnerability Tsa: Not affected
Vulnerability Tsx async abort: Not affected
Vulnerability Vmscape: Not affected
```
</details>
Comparing perf/dictionary-work-bounded-by-rows (cd7235fe7b7b4ad63d958c2f17bf71f7108bcb44) to 4bf32cb (merge-base) [diff](https://github.com/apache/datafusion/compare/4bf32cb46df983f8efd20d259e9e45827dce8f43..cd7235fe7b7b4ad63d958c2f17bf71f7108bcb44)
<details><summary>Run configuration</summary>
```yaml
run benchmark with_hashes
```
</details>
Results will be posted here when complete
---
[File an issue](https://github.com/adriangb/datafusion-benchmarking/issues) against this benchmark runner
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: bound work over dictionary values by the batch's row count [datafusion]
Posted by "adriangbot (via GitHub)" <gi...@apache.org>.
adriangbot commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6382268127
Hi @jayzhan211, `run benchmark` requires benchmark names (https://github.com/apache/datafusion/pull/26703#issuecomment-6382267942).
Usage:
```
run benchmark <name> # run specific benchmark(s)
run benchmarks # run default suite
run benchmarks <name1> <name2> # run specific benchmarks
```
Any benchmark name is accepted: `bench.sh` suite names (e.g. `tpch`, `clickbench_partitioned`, `wide_schema`) and Criterion bench targets (e.g. `sql_planner`) are resolved automatically. A name that matches neither fails on the runner.
Per-side configuration (`run benchmark tpch` followed by):
```yaml
env:
# shared env is inherited by BOTH the build and the run, so build
# flags go here. Builds default to no debuginfo for speed; opt back
# in for hung-job gdb dumps and cap jobs to stay within memory:
CARGO_PROFILE_RELEASE_DEBUG: "1"
CARGO_BUILD_JOBS: "1"
baseline:
ref: v45.0.0
env:
# per-side env only reaches the benchmark run, not the build
DATAFUSION_RUNTIME_MEMORY_LIMIT: 1G
changed:
ref: v46.0.0
env:
DATAFUSION_RUNTIME_MEMORY_LIMIT: 2G
```
Pod size and CPU architecture (each key is optional and keeps the default when absent; requests and limits are set equal):
```yaml
resources:
cpu: "16"
memory: "128Gi"
arch: arm64 # arm64 or amd64
```
Independent benchmark shards (optional; 1β8, default 1):
```yaml
run benchmark arrow_writer
shards: 4
```
Each shard builds both revisions, measures its assigned cases, and posts its own report. Resources and the job deadline apply per shard. DataFusion requests specifying a shard count greater than 1 fail with an error. Omit shards or use shards: 1 for DataFusion.
---
[File an issue](https://github.com/adriangb/datafusion-benchmarking/issues) against this benchmark runner
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: stop dictionary work growing with the group count [datafusion]
Posted by "adriangbot (via GitHub) via github" <gi...@datafusion.apache.org>.
adriangbot commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6704033009
π€ Benchmark completed (GKE) | [trigger](https://github.com/apache/datafusion/pull/26703#issuecomment-6703932330)
**Instance:** `c4a-highmem-16` (12 vCPU / 65 GiB)
Comparing perf/dictionary-work-bounded-by-rows (cd7235fe7b7b4ad63d958c2f17bf71f7108bcb44) to 4bf32cb (merge-base) [diff](https://github.com/apache/datafusion/compare/4bf32cb46df983f8efd20d259e9e45827dce8f43..cd7235fe7b7b4ad63d958c2f17bf71f7108bcb44)
<details><summary>Run configuration</summary>
```yaml
run benchmark clickbench_partitioned
```
</details>
<details><summary>CPU Details (lscpu)</summary>
```
Architecture: aarch64
CPU op-mode(s): 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Vendor ID: ARM
Model name: Neoverse-V2
Model: 1
Thread(s) per core: 1
Core(s) per cluster: 16
Socket(s): -
Cluster(s): 1
Stepping: r0p1
BogoMIPS: 2000.00
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache: 1 MiB (16 instances)
L1i cache: 1 MiB (16 instances)
L2 cache: 32 MiB (16 instances)
L3 cache: 80 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-15
Vulnerability Gather data sampling: Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1: Mitigation; __user pointer sanitization
Vulnerability Spectre v2: Mitigation; CSV2, BHB
Vulnerability Srbds: Not affected
Vulnerability Tsa: Not affected
Vulnerability Tsx async abort: Not affected
Vulnerability Vmscape: Not affected
```
</details>
<details><summary>Details</summary>
<p>
```
Comparing HEAD and perf_dictionary-work-bounded-by-rows
--------------------
Benchmark clickbench_partitioned.json
--------------------
βββββββββββββ³βββββββββββββ³βββββββββββββββββββββββββββββββββββββββ³ββββββββββββββββ
β Query β HEAD β perf_dictionary-work-bounded-by-rows β Change β
β‘ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β QQuery 0 β 1.21 ms β 1.19 ms β no change β
β QQuery 1 β 11.36 ms β 11.47 ms β no change β
β QQuery 2 β 34.78 ms β 34.60 ms β no change β
β QQuery 3 β 30.74 ms β 30.64 ms β no change β
β QQuery 4 β 238.29 ms β 235.45 ms β no change β
β QQuery 5 β 274.50 ms β 271.14 ms β no change β
β QQuery 6 β 1.19 ms β 1.21 ms β no change β
β QQuery 7 β 12.63 ms β 12.54 ms β no change β
β QQuery 8 β 324.86 ms β 322.66 ms β no change β
β QQuery 9 β 456.65 ms β 463.13 ms β no change β
β QQuery 10 β 63.88 ms β 63.44 ms β no change β
β QQuery 11 β 75.52 ms β 75.27 ms β no change β
β QQuery 12 β 259.24 ms β 264.07 ms β no change β
β QQuery 13 β 356.12 ms β 365.16 ms β no change β
β QQuery 14 β 277.01 ms β 277.44 ms β no change β
β QQuery 15 β 281.84 ms β 283.37 ms β no change β
β QQuery 16 β 614.14 ms β 614.44 ms β no change β
β QQuery 17 β 621.03 ms β 616.89 ms β no change β
β QQuery 18 β 1207.51 ms β 1203.24 ms β no change β
β QQuery 19 β 27.95 ms β 27.81 ms β no change β
β QQuery 20 β 521.98 ms β 516.27 ms β no change β
β QQuery 21 β 512.91 ms β 511.93 ms β no change β
β QQuery 22 β 982.66 ms β 982.35 ms β no change β
β QQuery 23 β 3057.07 ms β 3083.44 ms β no change β
β QQuery 24 β 40.70 ms β 41.99 ms β no change β
β QQuery 25 β 104.81 ms β 105.52 ms β no change β
β QQuery 26 β 40.75 ms β 41.12 ms β no change β
β QQuery 27 β 509.88 ms β 510.50 ms β no change β
β QQuery 28 β 2879.94 ms β 2859.02 ms β no change β
β QQuery 29 β 37.86 ms β 38.17 ms β no change β
β QQuery 30 β 304.46 ms β 302.49 ms β no change β
β QQuery 31 β 284.25 ms β 287.86 ms β no change β
β QQuery 32 β 928.64 ms β 959.72 ms β no change β
β QQuery 33 β 1427.32 ms β 1430.66 ms β no change β
β QQuery 34 β 1459.37 ms β 1460.97 ms β no change β
β QQuery 35 β 291.81 ms β 293.81 ms β no change β
β QQuery 36 β 68.64 ms β 65.13 ms β +1.05x faster β
β QQuery 37 β 34.60 ms β 34.55 ms β no change β
β QQuery 38 β 40.04 ms β 39.79 ms β no change β
β QQuery 39 β 131.87 ms β 145.78 ms β 1.11x slower β
β QQuery 40 β 13.89 ms β 13.97 ms β no change β
β QQuery 41 β 13.28 ms β 13.13 ms β no change β
β QQuery 42 β 12.74 ms β 12.97 ms β no change β
βββββββββββββ΄βββββββββββββ΄βββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ³βββββββββββββ
β Benchmark Summary β β
β‘βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β Total Time (HEAD) β 18869.93ms β
β Total Time (perf_dictionary-work-bounded-by-rows) β 18926.29ms β
β Average Time (HEAD) β 438.84ms β
β Average Time (perf_dictionary-work-bounded-by-rows) β 440.15ms β
β Queries Faster β 1 β
β Queries Slower β 1 β
β Queries with No Change β 41 β
β Queries with Failure β 0 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββ
Distribution per query (min / mean Β±stddev / max):
Comparing HEAD and perf_dictionary-work-bounded-by-rows
--------------------
Benchmark clickbench_partitioned.json
--------------------
βββββββββββββ³ββββββββββββββββββββββββββββββββββββββββ³ββββββββββββββββββββββββββββββββββββββββ³ββββββββββββββββ
β Query β HEAD β perf_dictionary-work-bounded-by-rows β Change β
β‘ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β QQuery 0 β 1.21 / 1.80 Β±1.09 / 3.98 ms β 1.19 / 1.81 Β±1.11 / 4.02 ms β no change β
β QQuery 1 β 11.36 / 11.59 Β±0.15 / 11.80 ms β 11.47 / 11.61 Β±0.10 / 11.71 ms β no change β
β QQuery 2 β 34.78 / 35.08 Β±0.27 / 35.59 ms β 34.60 / 35.02 Β±0.51 / 36.02 ms β no change β
β QQuery 3 β 30.74 / 32.08 Β±1.20 / 34.32 ms β 30.64 / 31.48 Β±0.82 / 32.90 ms β no change β
β QQuery 4 β 238.29 / 240.82 Β±1.94 / 244.22 ms β 235.45 / 238.65 Β±2.65 / 243.46 ms β no change β
β QQuery 5 β 274.50 / 278.44 Β±5.84 / 289.97 ms β 271.14 / 275.52 Β±7.74 / 290.98 ms β no change β
β QQuery 6 β 1.19 / 1.35 Β±0.25 / 1.83 ms β 1.21 / 1.35 Β±0.24 / 1.83 ms β no change β
β QQuery 7 β 12.63 / 12.78 Β±0.12 / 12.93 ms β 12.54 / 12.64 Β±0.13 / 12.88 ms β no change β
β QQuery 8 β 324.86 / 329.86 Β±3.21 / 334.31 ms β 322.66 / 329.91 Β±4.83 / 336.46 ms β no change β
β QQuery 9 β 456.65 / 463.96 Β±6.08 / 473.38 ms β 463.13 / 468.18 Β±2.88 / 471.09 ms β no change β
β QQuery 10 β 63.88 / 64.77 Β±0.65 / 65.83 ms β 63.44 / 66.57 Β±3.17 / 72.60 ms β no change β
β QQuery 11 β 75.52 / 76.16 Β±0.58 / 77.05 ms β 75.27 / 77.74 Β±3.03 / 83.67 ms β no change β
β QQuery 12 β 259.24 / 263.64 Β±3.84 / 270.44 ms β 264.07 / 266.11 Β±1.86 / 268.38 ms β no change β
β QQuery 13 β 356.12 / 371.46 Β±9.70 / 384.00 ms β 365.16 / 370.13 Β±4.45 / 375.64 ms β no change β
β QQuery 14 β 277.01 / 281.33 Β±7.05 / 295.35 ms β 277.44 / 280.95 Β±3.09 / 286.43 ms β no change β
β QQuery 15 β 281.84 / 291.09 Β±8.67 / 306.66 ms β 283.37 / 298.24 Β±11.76 / 319.31 ms β no change β
β QQuery 16 β 614.14 / 628.91 Β±13.17 / 653.44 ms β 614.44 / 625.42 Β±9.94 / 637.84 ms β no change β
β QQuery 17 β 621.03 / 626.45 Β±4.07 / 630.37 ms β 616.89 / 631.14 Β±8.90 / 643.32 ms β no change β
β QQuery 18 β 1207.51 / 1232.01 Β±20.29 / 1261.99 ms β 1203.24 / 1234.23 Β±17.06 / 1255.46 ms β no change β
β QQuery 19 β 27.95 / 34.71 Β±8.36 / 48.15 ms β 27.81 / 28.28 Β±0.64 / 29.50 ms β +1.23x faster β
β QQuery 20 β 521.98 / 530.65 Β±9.54 / 548.91 ms β 516.27 / 520.76 Β±3.38 / 525.58 ms β no change β
β QQuery 21 β 512.91 / 521.57 Β±6.52 / 532.04 ms β 511.93 / 515.90 Β±2.26 / 518.73 ms β no change β
β QQuery 22 β 982.66 / 995.78 Β±8.95 / 1010.07 ms β 982.35 / 996.81 Β±12.98 / 1012.54 ms β no change β
β QQuery 23 β 3057.07 / 3088.17 Β±18.69 / 3107.93 ms β 3083.44 / 3121.58 Β±31.75 / 3160.30 ms β no change β
β QQuery 24 β 40.70 / 43.29 Β±3.18 / 49.25 ms β 41.99 / 48.11 Β±6.62 / 60.15 ms β 1.11x slower β
β QQuery 25 β 104.81 / 106.90 Β±1.86 / 110.04 ms β 105.52 / 106.74 Β±1.33 / 108.88 ms β no change β
β QQuery 26 β 40.75 / 41.20 Β±0.26 / 41.51 ms β 41.12 / 42.64 Β±2.40 / 47.42 ms β no change β
β QQuery 27 β 509.88 / 516.15 Β±5.35 / 524.06 ms β 510.50 / 518.88 Β±7.87 / 532.84 ms β no change β
β QQuery 28 β 2879.94 / 2891.89 Β±12.54 / 2909.94 ms β 2859.02 / 2881.39 Β±14.01 / 2900.82 ms β no change β
β QQuery 29 β 37.86 / 46.41 Β±6.97 / 53.87 ms β 38.17 / 59.23 Β±22.70 / 96.08 ms β 1.28x slower β
β QQuery 30 β 304.46 / 310.71 Β±6.34 / 321.58 ms β 302.49 / 310.18 Β±6.00 / 318.03 ms β no change β
β QQuery 31 β 284.25 / 286.28 Β±1.46 / 288.03 ms β 287.86 / 291.31 Β±2.51 / 294.10 ms β no change β
β QQuery 32 β 928.64 / 955.32 Β±15.64 / 974.67 ms β 959.72 / 998.00 Β±25.05 / 1037.95 ms β no change β
β QQuery 33 β 1427.32 / 1470.20 Β±28.65 / 1514.53 ms β 1430.66 / 1470.89 Β±31.55 / 1517.81 ms β no change β
β QQuery 34 β 1459.37 / 1497.89 Β±25.93 / 1529.62 ms β 1460.97 / 1484.51 Β±18.68 / 1509.87 ms β no change β
β QQuery 35 β 291.81 / 323.75 Β±21.69 / 347.83 ms β 293.81 / 304.06 Β±10.61 / 324.26 ms β +1.06x faster β
β QQuery 36 β 68.64 / 72.41 Β±2.44 / 75.25 ms β 65.13 / 71.96 Β±6.56 / 79.99 ms β no change β
β QQuery 37 β 34.60 / 34.92 Β±0.32 / 35.52 ms β 34.55 / 35.73 Β±1.25 / 37.92 ms β no change β
β QQuery 38 β 40.04 / 44.52 Β±5.90 / 56.11 ms β 39.79 / 41.20 Β±1.19 / 42.72 ms β +1.08x faster β
β QQuery 39 β 131.87 / 145.75 Β±8.18 / 155.92 ms β 145.78 / 156.68 Β±8.47 / 169.56 ms β 1.07x slower β
β QQuery 40 β 13.89 / 14.16 Β±0.18 / 14.41 ms β 13.97 / 15.29 Β±0.97 / 16.77 ms β 1.08x slower β
β QQuery 41 β 13.28 / 13.45 Β±0.10 / 13.60 ms β 13.13 / 13.37 Β±0.22 / 13.65 ms β no change β
β QQuery 42 β 12.74 / 14.09 Β±2.12 / 18.30 ms β 12.97 / 14.05 Β±1.26 / 16.06 ms β no change β
βββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ³βββββββββββββ
β Benchmark Summary β β
β‘βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β Total Time (HEAD) β 19243.72ms β
β Total Time (perf_dictionary-work-bounded-by-rows) β 19304.27ms β
β Average Time (HEAD) β 447.53ms β
β Average Time (perf_dictionary-work-bounded-by-rows) β 448.94ms β
β Queries Faster β 3 β
β Queries Slower β 4 β
β Queries with No Change β 36 β
β Queries with Failure β 0 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββ
```
</p>
</details>
<details><summary>Resource Usage</summary>
**clickbench_partitioned β base (merge-base)**
| Metric | Value |
|--------|-------|
| Wall time | 100.0s |
| Peak memory | 11.8 GiB |
| Avg memory | 4.5 GiB |
| CPU user | 985.6s |
| CPU sys | 71.1s |
| Peak spill | 0 B |
**clickbench_partitioned β branch**
| Metric | Value |
|--------|-------|
| Wall time | 100.0s |
| Peak memory | 11.2 GiB |
| Avg memory | 4.6 GiB |
| CPU user | 984.1s |
| CPU sys | 72.2s |
| Peak spill | 0 B |
</details>
---
[File an issue](https://github.com/adriangb/datafusion-benchmarking/issues) against this benchmark runner
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: stop dictionary work growing with the group count [datafusion]
Posted by "jayzhan211 (via GitHub) via github" <gi...@datafusion.apache.org>.
jayzhan211 merged PR #26703:
URL: https://github.com/apache/datafusion/pull/26703
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: bound work over dictionary values by the batch's row count [datafusion]
Posted by "adriangbot (via GitHub) via github" <gi...@datafusion.apache.org>.
adriangbot commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6703645475
π€ Benchmark running (GKE) | [trigger](https://github.com/apache/datafusion/pull/26703#issuecomment-6703629370)
**Instance:** `c4a-highmem-16` (12 vCPU / 65 GiB) | `Linux bench-c6703629370-4587-gh6sm 6.12.105+ #1 SMP Sat Sep 19 07:55:25 UTC 2026 aarch64 GNU/Linux`
<details><summary>CPU Details (lscpu)</summary>
```
Architecture: aarch64
CPU op-mode(s): 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Vendor ID: ARM
Model name: Neoverse-V2
Model: 1
Thread(s) per core: 1
Core(s) per cluster: 16
Socket(s): -
Cluster(s): 1
Stepping: r0p1
BogoMIPS: 2000.00
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache: 1 MiB (16 instances)
L1i cache: 1 MiB (16 instances)
L2 cache: 32 MiB (16 instances)
L3 cache: 80 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-15
Vulnerability Gather data sampling: Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1: Mitigation; __user pointer sanitization
Vulnerability Spectre v2: Mitigation; CSV2, BHB
Vulnerability Srbds: Not affected
Vulnerability Tsa: Not affected
Vulnerability Tsx async abort: Not affected
Vulnerability Vmscape: Not affected
```
</details>
Comparing perf/dictionary-work-bounded-by-rows (cd7235fe7b7b4ad63d958c2f17bf71f7108bcb44) to 4bf32cb (merge-base) [diff](https://github.com/apache/datafusion/compare/4bf32cb46df983f8efd20d259e9e45827dce8f43..cd7235fe7b7b4ad63d958c2f17bf71f7108bcb44)
<details><summary>Run configuration</summary>
```yaml
run benchmark clickbench_partitioned
```
</details>
Results will be posted here when complete
---
[File an issue](https://github.com/adriangb/datafusion-benchmarking/issues) against this benchmark runner
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: stop dictionary work growing with the group count [datafusion]
Posted by "adriangbot (via GitHub) via github" <gi...@datafusion.apache.org>.
adriangbot commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6703885037
π€ Benchmark completed (GKE) | [trigger](https://github.com/apache/datafusion/pull/26703#issuecomment-6703628936)
**Instance:** `c4a-highmem-16` (12 vCPU / 65 GiB)
Comparing perf/dictionary-work-bounded-by-rows (cd7235fe7b7b4ad63d958c2f17bf71f7108bcb44) to 4bf32cb (merge-base) [diff](https://github.com/apache/datafusion/compare/4bf32cb46df983f8efd20d259e9e45827dce8f43..cd7235fe7b7b4ad63d958c2f17bf71f7108bcb44)
<details><summary>Run configuration</summary>
```yaml
run benchmark with_hashes
```
</details>
<details><summary>CPU Details (lscpu)</summary>
```
Architecture: aarch64
CPU op-mode(s): 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Vendor ID: ARM
Model name: Neoverse-V2
Model: 1
Thread(s) per core: 1
Core(s) per cluster: 16
Socket(s): -
Cluster(s): 1
Stepping: r0p1
BogoMIPS: 2000.00
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache: 1 MiB (16 instances)
L1i cache: 1 MiB (16 instances)
L2 cache: 32 MiB (16 instances)
L3 cache: 80 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-15
Vulnerability Gather data sampling: Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1: Mitigation; __user pointer sanitization
Vulnerability Spectre v2: Mitigation; CSV2, BHB
Vulnerability Srbds: Not affected
Vulnerability Tsa: Not affected
Vulnerability Tsx async abort: Not affected
Vulnerability Vmscape: Not affected
```
</details>
<details><summary>Details</summary>
<p>
```
group HEAD perf_dictionary-work-bounded-by-rows
----- ---- ------------------------------------
dense_union: multiple, no nulls 1.00 41.7Β±0.05Β΅s ? ?/sec 1.00 41.7Β±0.08Β΅s ? ?/sec
dense_union: single, no nulls 1.00 14.2Β±0.03Β΅s ? ?/sec 1.00 14.2Β±0.02Β΅s ? ?/sec
dense_union_sliced: 1/10 of 81920 rows 1.00 21.7Β±0.02Β΅s ? ?/sec 1.00 21.7Β±0.02Β΅s ? ?/sec
dense_union_sliced: 1/2 of 16384 rows 1.00 21.6Β±0.02Β΅s ? ?/sec 1.00 21.6Β±0.02Β΅s ? ?/sec
dense_union_sliced: 1/5 of 40960 rows 1.00 21.7Β±0.02Β΅s ? ?/sec 1.00 21.8Β±0.02Β΅s ? ?/sec
dictionary_sliced: 1/128 of 1048576 values 1.00 117.7Β±2.10Β΅s ? ?/sec
dictionary_sliced: 1/8 of 65536 values 1.00 122.2Β±0.08Β΅s ? ?/sec
dictionary_utf8_int32: multiple, no nulls 1.00 10.8Β±0.01Β΅s ? ?/sec 1.01 10.9Β±0.01Β΅s ? ?/sec
dictionary_utf8_int32: multiple, nulls 1.01 26.0Β±0.01Β΅s ? ?/sec 1.00 25.7Β±0.02Β΅s ? ?/sec
dictionary_utf8_int32: single, no nulls 1.00 3.3Β±0.00Β΅s ? ?/sec 1.00 3.3Β±0.00Β΅s ? ?/sec
dictionary_utf8_int32: single, nulls 1.00 8.2Β±0.01Β΅s ? ?/sec 1.00 8.2Β±0.00Β΅s ? ?/sec
fixed_size_list_array: multiple, no nulls 1.01 100.2Β±0.23Β΅s ? ?/sec 1.00 99.6Β±0.16Β΅s ? ?/sec
fixed_size_list_array: multiple, nulls 1.00 109.2Β±0.07Β΅s ? ?/sec 1.01 110.2Β±0.10Β΅s ? ?/sec
fixed_size_list_array: single, no nulls 1.00 33.8Β±0.05Β΅s ? ?/sec 1.04 35.0Β±0.72Β΅s ? ?/sec
fixed_size_list_array: single, nulls 1.00 36.9Β±0.23Β΅s ? ?/sec 1.00 36.9Β±0.08Β΅s ? ?/sec
int64: multiple, no nulls 1.00 11.7Β±0.01Β΅s ? ?/sec 1.00 11.7Β±0.02Β΅s ? ?/sec
int64: multiple, nulls 1.00 26.8Β±0.01Β΅s ? ?/sec 1.00 26.8Β±0.06Β΅s ? ?/sec
int64: single, no nulls 1.00 3.8Β±0.01Β΅s ? ?/sec 1.01 3.8Β±0.01Β΅s ? ?/sec
int64: single, nulls 1.00 8.8Β±0.01Β΅s ? ?/sec 1.01 8.9Β±0.01Β΅s ? ?/sec
large_utf8: multiple, no nulls 1.03 122.6Β±0.65Β΅s ? ?/sec 1.00 118.8Β±1.58Β΅s ? ?/sec
large_utf8: multiple, nulls 1.01 135.8Β±1.55Β΅s ? ?/sec 1.00 134.1Β±0.64Β΅s ? ?/sec
large_utf8: single, no nulls 1.01 39.7Β±0.13Β΅s ? ?/sec 1.00 39.1Β±0.23Β΅s ? ?/sec
large_utf8: single, nulls 1.03 44.6Β±1.35Β΅s ? ?/sec 1.00 43.3Β±0.30Β΅s ? ?/sec
list_array: multiple, no nulls 1.00 129.4Β±0.16Β΅s ? ?/sec 1.00 129.5Β±0.19Β΅s ? ?/sec
list_array: multiple, nulls 1.00 158.3Β±0.20Β΅s ? ?/sec 1.00 157.6Β±0.17Β΅s ? ?/sec
list_array: single, no nulls 1.04 45.9Β±0.18Β΅s ? ?/sec 1.00 44.1Β±1.09Β΅s ? ?/sec
list_array: single, nulls 1.00 53.1Β±0.13Β΅s ? ?/sec 1.00 52.9Β±0.12Β΅s ? ?/sec
list_array_sliced: 1/10 of 81920 rows 1.00 43.4Β±0.05Β΅s ? ?/sec 1.00 43.4Β±1.05Β΅s ? ?/sec
list_array_sliced: 1/2 of 16384 rows 1.00 44.6Β±1.15Β΅s ? ?/sec 1.02 45.7Β±0.08Β΅s ? ?/sec
list_array_sliced: 1/5 of 40960 rows 1.00 43.4Β±0.04Β΅s ? ?/sec 1.06 45.8Β±0.36Β΅s ? ?/sec
list_view_array: multiple, no nulls 1.01 124.6Β±0.17Β΅s ? ?/sec 1.00 123.7Β±0.18Β΅s ? ?/sec
list_view_array: multiple, nulls 1.00 132.8Β±0.06Β΅s ? ?/sec 1.00 132.4Β±0.07Β΅s ? ?/sec
list_view_array: single, no nulls 1.02 42.3Β±0.11Β΅s ? ?/sec 1.00 41.6Β±0.16Β΅s ? ?/sec
list_view_array: single, nulls 1.00 44.5Β±0.08Β΅s ? ?/sec 1.00 44.5Β±0.07Β΅s ? ?/sec
map_array: multiple, no nulls 1.00 194.9Β±0.18Β΅s ? ?/sec 1.00 194.1Β±0.20Β΅s ? ?/sec
map_array: multiple, nulls 1.00 204.0Β±0.40Β΅s ? ?/sec 1.00 203.5Β±0.23Β΅s ? ?/sec
map_array: single, no nulls 1.01 65.4Β±0.06Β΅s ? ?/sec 1.00 65.0Β±0.06Β΅s ? ?/sec
map_array: single, nulls 1.00 68.2Β±0.04Β΅s ? ?/sec 1.00 68.1Β±0.07Β΅s ? ?/sec
map_array_sliced: 1/10 of 81920 rows 1.00 65.3Β±0.14Β΅s ? ?/sec 1.01 65.7Β±0.05Β΅s ? ?/sec
map_array_sliced: 1/2 of 16384 rows 1.00 65.5Β±0.03Β΅s ? ?/sec 1.00 65.6Β±0.11Β΅s ? ?/sec
map_array_sliced: 1/5 of 40960 rows 1.00 65.4Β±0.15Β΅s ? ?/sec 1.00 65.3Β±0.08Β΅s ? ?/sec
mixed: 3 columns (int64, utf8, utf8_view) 1.04 83.4Β±0.20Β΅s ? ?/sec 1.00 80.3Β±1.23Β΅s ? ?/sec
null: multiple, no nulls 1.00 2.5Β±0.01Β΅s ? ?/sec 1.00 2.5Β±0.00Β΅s ? ?/sec
null: single, no nulls 1.00 1111.9Β±3.82ns ? ?/sec 1.00 1107.5Β±2.52ns ? ?/sec
run_array_int32: multiple, no nulls 1.00 4.9Β±0.01Β΅s ? ?/sec 1.00 4.9Β±0.01Β΅s ? ?/sec
run_array_int32: multiple, nulls 1.02 6.9Β±0.01Β΅s ? ?/sec 1.00 6.8Β±0.01Β΅s ? ?/sec
run_array_int32: single, no nulls 1.01 1829.3Β±4.16ns ? ?/sec 1.00 1809.0Β±5.13ns ? ?/sec
run_array_int32: single, nulls 1.06 2.5Β±0.00Β΅s ? ?/sec 1.00 2.4Β±0.00Β΅s ? ?/sec
sparse_union (2 types): multiple, no nulls 1.02 98.9Β±0.43Β΅s ? ?/sec 1.00 97.3Β±0.60Β΅s ? ?/sec
sparse_union (2 types): single, no nulls 1.07 34.9Β±2.06Β΅s ? ?/sec 1.00 32.8Β±0.18Β΅s ? ?/sec
sparse_union (utf8): multiple, no nulls 1.01 212.8Β±1.11Β΅s ? ?/sec 1.00 209.9Β±1.03Β΅s ? ?/sec
sparse_union (utf8): single, no nulls 1.00 71.0Β±0.38Β΅s ? ?/sec 1.00 70.7Β±0.48Β΅s ? ?/sec
sparse_union: multiple, no nulls 1.00 94.3Β±0.82Β΅s ? ?/sec 1.01 94.9Β±0.67Β΅s ? ?/sec
sparse_union: single, no nulls 1.00 31.7Β±0.20Β΅s ? ?/sec 1.00 31.9Β±0.18Β΅s ? ?/sec
sparse_union_sliced: 1/10 of 81920 rows 1.00 31.5Β±0.19Β΅s ? ?/sec 1.03 32.4Β±0.19Β΅s ? ?/sec
sparse_union_sliced: 1/2 of 16384 rows 1.01 32.1Β±0.42Β΅s ? ?/sec 1.00 31.9Β±0.21Β΅s ? ?/sec
sparse_union_sliced: 1/5 of 40960 rows 1.00 31.8Β±0.23Β΅s ? ?/sec 1.00 31.9Β±0.30Β΅s ? ?/sec
struct_array: multiple, no nulls 1.01 152.3Β±0.33Β΅s ? ?/sec 1.00 151.0Β±0.71Β΅s ? ?/sec
struct_array: multiple, nulls 1.00 166.8Β±0.23Β΅s ? ?/sec 1.01 167.9Β±0.35Β΅s ? ?/sec
struct_array: single, no nulls 1.00 50.9Β±0.13Β΅s ? ?/sec 1.00 50.8Β±0.42Β΅s ? ?/sec
struct_array: single, nulls 1.00 56.3Β±0.14Β΅s ? ?/sec 1.00 56.3Β±0.21Β΅s ? ?/sec
utf8: multiple, no nulls 1.01 116.0Β±0.65Β΅s ? ?/sec 1.00 114.7Β±0.47Β΅s ? ?/sec
utf8: multiple, nulls 1.00 133.7Β±0.84Β΅s ? ?/sec 1.00 134.0Β±0.66Β΅s ? ?/sec
utf8: single, no nulls 1.03 30.5Β±0.73Β΅s ? ?/sec 1.00 29.6Β±0.32Β΅s ? ?/sec
utf8: single, nulls 1.00 35.4Β±0.46Β΅s ? ?/sec 1.00 35.5Β±0.18Β΅s ? ?/sec
utf8_view (small): multiple, no nulls 1.00 19.0Β±0.04Β΅s ? ?/sec 1.00 19.0Β±0.01Β΅s ? ?/sec
utf8_view (small): multiple, nulls 1.00 29.2Β±0.02Β΅s ? ?/sec 1.01 29.4Β±0.02Β΅s ? ?/sec
utf8_view (small): single, no nulls 1.00 5.0Β±0.00Β΅s ? ?/sec 1.01 5.1Β±0.00Β΅s ? ?/sec
utf8_view (small): single, nulls 1.00 9.7Β±0.01Β΅s ? ?/sec 1.01 9.8Β±0.01Β΅s ? ?/sec
utf8_view: multiple, no nulls 1.05 103.2Β±0.30Β΅s ? ?/sec 1.00 98.2Β±0.27Β΅s ? ?/sec
utf8_view: multiple, nulls 1.00 107.6Β±0.16Β΅s ? ?/sec 1.06 113.7Β±0.42Β΅s ? ?/sec
utf8_view: single, no nulls 1.12 35.3Β±0.08Β΅s ? ?/sec 1.00 31.4Β±0.12Β΅s ? ?/sec
utf8_view: single, nulls 1.00 32.7Β±0.04Β΅s ? ?/sec 1.00 32.8Β±0.10Β΅s ? ?/sec
```
</p>
</details>
<details><summary>Resource Usage</summary>
**with_hashes β base (merge-base)**
| Metric | Value |
|--------|-------|
| Wall time | 755.2s |
| Peak memory | 41.3 MiB |
| Avg memory | 34.6 MiB |
| CPU user | 875.6s |
| CPU sys | 0.8s |
| Peak spill | 0 B |
**with_hashes β branch**
| Metric | Value |
|--------|-------|
| Wall time | 775.2s |
| Peak memory | 60.0 MiB |
| Avg memory | 35.4 MiB |
| CPU user | 902.9s |
| CPU sys | 0.8s |
| Peak spill | 0 B |
</details>
---
[File an issue](https://github.com/adriangb/datafusion-benchmarking/issues) against this benchmark runner
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: stop dictionary work growing with the group count [datafusion]
Posted by "jayzhan211 (via GitHub) via github" <gi...@datafusion.apache.org>.
jayzhan211 commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6703932330
run benchmark clickbench_partitioned
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: bound work over dictionary values by the batch's row count [datafusion]
Posted by "jayzhan211 (via GitHub) via github" <gi...@datafusion.apache.org>.
jayzhan211 commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6703678538
@Jefffrey thanks for the review. This PR changed substantially after your approval, so here is what's new. Your 8 reviewed commits are unchanged apart from a rebase, and the last 3 commits are new. I plan to merge it; if you'd like to look, `next_batch` in `aggregate_hash_table/common.rs` is the part you haven't seen, and I'll follow up in a new PR on anything you find.
- **Aggregate output:** `next_batch` now gives a slice with more values than rows only the values its rows reference. This fixes #26696 at its source, so it also helps the repartition coalescer and the final aggregate. ClickBench partitioned with dictionaries goes from 78.8 s to 42.8 s, and peak memory from 13.1 to 12.7 GiB ([bot run](https://github.com/apache/datafusion/pull/26703#issuecomment-6703599262)).
- **Compaction:** the new `compact_dictionary` takes each referenced value once. Copying a value per row, as the approved version did, gave wrong hashes and function results when a dictionary had more rows than its key type holds, could fail with an offset overflow, and was over 100x slower than main for a repeated 64 KB value.
- **Threshold:** `MAX_DICTIONARY_VALUES_PER_ROW` goes from 16 to 64, because compacting just above 16 made cheap functions such as `lower` slower. It is now only a guard for filters and scans, where I measured no gain.
- **Tests:** the `dictionary.slt` comparison never reached oversized dictionaries, because a filter on the group key is pushed below the aggregate. It is now projected, with a new block for filter output, and the bugs above have unit tests.
`compact_dictionary` is new public API, next to `map_dictionary_values` and `MAX_DICTIONARY_VALUES_PER_ROW`.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: bound work over dictionary values by the batch's row count [datafusion]
Posted by "adriangbot (via GitHub) via github" <gi...@datafusion.apache.org>.
adriangbot commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6703400045
π€ Benchmark running (GKE) | [trigger](https://github.com/apache/datafusion/pull/26703#issuecomment-6703380077)
**Instance:** `c4a-highmem-16` (12 vCPU / 65 GiB) | `Linux bench-c6703380077-4582-x5dsm 6.12.105+ #1 SMP Sat Sep 19 07:55:25 UTC 2026 aarch64 GNU/Linux`
<details><summary>CPU Details (lscpu)</summary>
```
Architecture: aarch64
CPU op-mode(s): 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Vendor ID: ARM
Model name: Neoverse-V2
Model: 1
Thread(s) per core: 1
Core(s) per cluster: 16
Socket(s): -
Cluster(s): 1
Stepping: r0p1
BogoMIPS: 2000.00
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache: 1 MiB (16 instances)
L1i cache: 1 MiB (16 instances)
L2 cache: 32 MiB (16 instances)
L3 cache: 80 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-15
Vulnerability Gather data sampling: Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1: Mitigation; __user pointer sanitization
Vulnerability Spectre v2: Mitigation; CSV2, BHB
Vulnerability Srbds: Not affected
Vulnerability Tsa: Not affected
Vulnerability Tsx async abort: Not affected
Vulnerability Vmscape: Not affected
```
</details>
Comparing perf/dictionary-work-bounded-by-rows (cd7235fe7b7b4ad63d958c2f17bf71f7108bcb44) to 4bf32cb (merge-base) [diff](https://github.com/apache/datafusion/compare/4bf32cb46df983f8efd20d259e9e45827dce8f43..cd7235fe7b7b4ad63d958c2f17bf71f7108bcb44)
<details><summary>Run configuration</summary>
```yaml
run benchmark clickbench_partitioned
baseline:
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
changed:
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
```
</details>
Results will be posted here when complete
---
[File an issue](https://github.com/adriangb/datafusion-benchmarking/issues) against this benchmark runner
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: bound work over dictionary values by the batch's row count [datafusion]
Posted by "adriangbot (via GitHub)" <gi...@apache.org>.
adriangbot commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6384519632
π€ Benchmark completed (GKE) | [trigger](https://github.com/apache/datafusion/pull/26703#issuecomment-6384245088)
**Instance:** `c4a-highmem-16` (12 vCPU / 65 GiB)
Comparing perf/dictionary-work-bounded-by-rows (c459abafcdb512f08eec3bf575322e30cb4ba0d2) to 039c0b9 (merge-base) [diff](https://github.com/apache/datafusion/compare/039c0b99d5b05e73ff5def029c0131b76b481c6f..c459abafcdb512f08eec3bf575322e30cb4ba0d2)
<details><summary>Run configuration</summary>
```yaml
run benchmark with_hashes
```
</details>
<details><summary>CPU Details (lscpu)</summary>
```
Architecture: aarch64
CPU op-mode(s): 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Vendor ID: ARM
Model name: Neoverse-V2
Model: 1
Thread(s) per core: 1
Core(s) per cluster: 16
Socket(s): -
Cluster(s): 1
Stepping: r0p1
BogoMIPS: 2000.00
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache: 1 MiB (16 instances)
L1i cache: 1 MiB (16 instances)
L2 cache: 32 MiB (16 instances)
L3 cache: 80 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-15
Vulnerability Gather data sampling: Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1: Mitigation; __user pointer sanitization
Vulnerability Spectre v2: Mitigation; CSV2, BHB
Vulnerability Srbds: Not affected
Vulnerability Tsa: Not affected
Vulnerability Tsx async abort: Not affected
Vulnerability Vmscape: Not affected
```
</details>
<details><summary>Details</summary>
<p>
```
group HEAD perf_dictionary-work-bounded-by-rows
----- ---- ------------------------------------
dense_union: multiple, no nulls 1.00 41.7Β±0.05Β΅s ? ?/sec 1.00 41.5Β±0.14Β΅s ? ?/sec
dense_union: single, no nulls 1.00 14.1Β±0.01Β΅s ? ?/sec 1.00 14.1Β±0.02Β΅s ? ?/sec
dense_union_sliced: 1/10 of 81920 rows 1.00 21.7Β±0.02Β΅s ? ?/sec 1.00 21.8Β±0.03Β΅s ? ?/sec
dense_union_sliced: 1/2 of 16384 rows 1.00 21.7Β±0.05Β΅s ? ?/sec 1.00 21.8Β±0.03Β΅s ? ?/sec
dense_union_sliced: 1/5 of 40960 rows 1.00 21.6Β±0.02Β΅s ? ?/sec 1.00 21.7Β±0.02Β΅s ? ?/sec
dictionary_sliced: 1/32 of 262144 values 1.00 53.2Β±0.04Β΅s ? ?/sec
dictionary_sliced: 1/8 of 65536 values 1.00 122.5Β±0.41Β΅s ? ?/sec
dictionary_utf8_int32: multiple, no nulls 1.00 10.8Β±0.03Β΅s ? ?/sec 1.00 10.8Β±0.01Β΅s ? ?/sec
dictionary_utf8_int32: multiple, nulls 1.01 26.3Β±0.07Β΅s ? ?/sec 1.00 26.0Β±0.05Β΅s ? ?/sec
dictionary_utf8_int32: single, no nulls 1.00 3.3Β±0.00Β΅s ? ?/sec 1.00 3.3Β±0.00Β΅s ? ?/sec
dictionary_utf8_int32: single, nulls 1.00 8.1Β±0.02Β΅s ? ?/sec 1.02 8.2Β±0.01Β΅s ? ?/sec
fixed_size_list_array: multiple, no nulls 1.05 107.8Β±0.50Β΅s ? ?/sec 1.00 102.7Β±2.39Β΅s ? ?/sec
fixed_size_list_array: multiple, nulls 1.02 110.7Β±0.15Β΅s ? ?/sec 1.00 109.0Β±0.35Β΅s ? ?/sec
fixed_size_list_array: single, no nulls 1.01 33.7Β±0.11Β΅s ? ?/sec 1.00 33.5Β±0.05Β΅s ? ?/sec
fixed_size_list_array: single, nulls 1.01 37.2Β±0.06Β΅s ? ?/sec 1.00 36.7Β±0.10Β΅s ? ?/sec
int64: multiple, no nulls 1.00 11.7Β±0.01Β΅s ? ?/sec 1.00 11.7Β±0.02Β΅s ? ?/sec
int64: multiple, nulls 1.00 26.7Β±0.02Β΅s ? ?/sec 1.01 26.9Β±0.02Β΅s ? ?/sec
int64: single, no nulls 1.00 3.8Β±0.01Β΅s ? ?/sec 1.00 3.8Β±0.01Β΅s ? ?/sec
int64: single, nulls 1.00 8.8Β±0.01Β΅s ? ?/sec 1.00 8.7Β±0.01Β΅s ? ?/sec
large_utf8: multiple, no nulls 1.04 128.3Β±0.72Β΅s ? ?/sec 1.00 123.2Β±0.68Β΅s ? ?/sec
large_utf8: multiple, nulls 1.00 129.4Β±0.48Β΅s ? ?/sec 1.12 144.6Β±0.86Β΅s ? ?/sec
large_utf8: single, no nulls 1.00 29.8Β±0.29Β΅s ? ?/sec 1.35 40.2Β±0.10Β΅s ? ?/sec
large_utf8: single, nulls 1.01 34.6Β±0.28Β΅s ? ?/sec 1.00 34.3Β±0.23Β΅s ? ?/sec
list_array: multiple, no nulls 1.00 128.9Β±0.10Β΅s ? ?/sec 1.00 129.0Β±0.09Β΅s ? ?/sec
list_array: multiple, nulls 1.00 157.0Β±0.09Β΅s ? ?/sec 1.01 157.8Β±0.14Β΅s ? ?/sec
list_array: single, no nulls 1.07 46.3Β±0.20Β΅s ? ?/sec 1.00 43.3Β±0.06Β΅s ? ?/sec
list_array: single, nulls 1.00 52.6Β±0.04Β΅s ? ?/sec 1.00 52.8Β±0.04Β΅s ? ?/sec
list_array_sliced: 1/10 of 81920 rows 1.00 43.2Β±0.03Β΅s ? ?/sec 1.01 43.5Β±0.03Β΅s ? ?/sec
list_array_sliced: 1/2 of 16384 rows 1.00 43.6Β±0.13Β΅s ? ?/sec 1.00 43.4Β±0.03Β΅s ? ?/sec
list_array_sliced: 1/5 of 40960 rows 1.07 46.1Β±0.39Β΅s ? ?/sec 1.00 43.0Β±0.20Β΅s ? ?/sec
list_view_array: multiple, no nulls 1.00 125.1Β±0.21Β΅s ? ?/sec 1.04 129.6Β±0.73Β΅s ? ?/sec
list_view_array: multiple, nulls 1.00 132.6Β±0.15Β΅s ? ?/sec 1.00 132.5Β±0.17Β΅s ? ?/sec
list_view_array: single, no nulls 1.02 42.2Β±1.49Β΅s ? ?/sec 1.00 41.6Β±0.07Β΅s ? ?/sec
list_view_array: single, nulls 1.01 44.7Β±0.05Β΅s ? ?/sec 1.00 44.4Β±0.05Β΅s ? ?/sec
map_array: multiple, no nulls 1.00 193.5Β±0.23Β΅s ? ?/sec 1.01 195.1Β±0.34Β΅s ? ?/sec
map_array: multiple, nulls 1.00 202.5Β±0.19Β΅s ? ?/sec 1.00 203.0Β±0.19Β΅s ? ?/sec
map_array: single, no nulls 1.00 64.7Β±0.05Β΅s ? ?/sec 1.01 65.6Β±0.25Β΅s ? ?/sec
map_array: single, nulls 1.00 67.7Β±0.09Β΅s ? ?/sec 1.00 67.9Β±0.04Β΅s ? ?/sec
map_array_sliced: 1/10 of 81920 rows 1.00 64.8Β±0.06Β΅s ? ?/sec 1.02 66.0Β±0.16Β΅s ? ?/sec
map_array_sliced: 1/2 of 16384 rows 1.00 65.0Β±0.16Β΅s ? ?/sec 1.01 65.6Β±0.07Β΅s ? ?/sec
map_array_sliced: 1/5 of 40960 rows 1.01 65.7Β±0.22Β΅s ? ?/sec 1.00 65.4Β±0.04Β΅s ? ?/sec
mixed: 3 columns (int64, utf8, utf8_view) 1.09 87.7Β±0.29Β΅s ? ?/sec 1.00 80.4Β±0.66Β΅s ? ?/sec
null: multiple, no nulls 1.01 2.5Β±0.00Β΅s ? ?/sec 1.00 2.5Β±0.01Β΅s ? ?/sec
null: single, no nulls 1.00 1110.3Β±2.67ns ? ?/sec 1.00 1111.1Β±2.90ns ? ?/sec
run_array_int32: multiple, no nulls 1.00 4.9Β±0.01Β΅s ? ?/sec 1.00 4.9Β±0.01Β΅s ? ?/sec
run_array_int32: multiple, nulls 1.00 6.6Β±0.01Β΅s ? ?/sec 1.03 6.8Β±0.02Β΅s ? ?/sec
run_array_int32: single, no nulls 1.00 1804.9Β±4.09ns ? ?/sec 1.00 1811.5Β±4.00ns ? ?/sec
run_array_int32: single, nulls 1.00 2.3Β±0.00Β΅s ? ?/sec 1.07 2.4Β±0.00Β΅s ? ?/sec
sparse_union (2 types): multiple, no nulls 1.00 96.9Β±0.34Β΅s ? ?/sec 1.00 97.2Β±0.48Β΅s ? ?/sec
sparse_union (2 types): single, no nulls 1.00 32.6Β±0.12Β΅s ? ?/sec 1.03 33.6Β±1.39Β΅s ? ?/sec
sparse_union (utf8): multiple, no nulls 1.00 235.2Β±1.24Β΅s ? ?/sec 1.00 235.9Β±0.86Β΅s ? ?/sec
sparse_union (utf8): single, no nulls 1.00 78.4Β±0.39Β΅s ? ?/sec 1.01 79.0Β±0.31Β΅s ? ?/sec
sparse_union: multiple, no nulls 1.00 93.6Β±0.63Β΅s ? ?/sec 1.01 94.9Β±0.58Β΅s ? ?/sec
sparse_union: single, no nulls 1.00 31.5Β±0.20Β΅s ? ?/sec 1.01 31.9Β±0.20Β΅s ? ?/sec
sparse_union_sliced: 1/10 of 81920 rows 1.00 31.8Β±0.19Β΅s ? ?/sec 1.00 31.9Β±0.31Β΅s ? ?/sec
sparse_union_sliced: 1/2 of 16384 rows 1.01 31.8Β±0.22Β΅s ? ?/sec 1.00 31.6Β±0.27Β΅s ? ?/sec
sparse_union_sliced: 1/5 of 40960 rows 1.00 31.6Β±0.24Β΅s ? ?/sec 1.00 31.7Β±0.23Β΅s ? ?/sec
struct_array: multiple, no nulls 1.17 173.8Β±0.92Β΅s ? ?/sec 1.00 148.9Β±0.65Β΅s ? ?/sec
struct_array: multiple, nulls 1.18 195.8Β±2.83Β΅s ? ?/sec 1.00 166.2Β±1.10Β΅s ? ?/sec
struct_array: single, no nulls 1.17 59.4Β±0.72Β΅s ? ?/sec 1.00 50.5Β±0.50Β΅s ? ?/sec
struct_array: single, nulls 1.15 63.9Β±0.41Β΅s ? ?/sec 1.00 55.6Β±0.47Β΅s ? ?/sec
utf8: multiple, no nulls 1.24 142.6Β±0.45Β΅s ? ?/sec 1.00 115.3Β±0.49Β΅s ? ?/sec
utf8: multiple, nulls 1.00 161.4Β±0.99Β΅s ? ?/sec 1.00 161.1Β±0.79Β΅s ? ?/sec
utf8: single, no nulls 1.40 41.0Β±0.12Β΅s ? ?/sec 1.00 29.2Β±0.14Β΅s ? ?/sec
utf8: single, nulls 1.00 45.3Β±1.09Β΅s ? ?/sec 1.01 45.9Β±2.00Β΅s ? ?/sec
utf8_view (small): multiple, no nulls 1.00 19.0Β±0.01Β΅s ? ?/sec 1.00 19.0Β±0.01Β΅s ? ?/sec
utf8_view (small): multiple, nulls 1.01 29.8Β±0.07Β΅s ? ?/sec 1.00 29.4Β±0.02Β΅s ? ?/sec
utf8_view (small): single, no nulls 1.00 5.0Β±0.00Β΅s ? ?/sec 1.00 5.1Β±0.00Β΅s ? ?/sec
utf8_view (small): single, nulls 1.00 9.7Β±0.01Β΅s ? ?/sec 1.00 9.7Β±0.01Β΅s ? ?/sec
utf8_view: multiple, no nulls 1.05 102.2Β±0.14Β΅s ? ?/sec 1.00 97.5Β±0.16Β΅s ? ?/sec
utf8_view: multiple, nulls 1.00 124.2Β±0.25Β΅s ? ?/sec 1.00 124.0Β±0.40Β΅s ? ?/sec
utf8_view: single, no nulls 1.14 34.7Β±0.12Β΅s ? ?/sec 1.00 30.5Β±0.05Β΅s ? ?/sec
utf8_view: single, nulls 1.00 36.5Β±0.12Β΅s ? ?/sec 1.00 36.5Β±0.07Β΅s ? ?/sec
```
</p>
</details>
<details><summary>Resource Usage</summary>
**with_hashes β base (merge-base)**
| Metric | Value |
|--------|-------|
| Wall time | 745.2s |
| Peak memory | 40.5 MiB |
| Avg memory | 35.0 MiB |
| CPU user | 884.3s |
| CPU sys | 0.8s |
| Peak spill | 0 B |
**with_hashes β branch**
| Metric | Value |
|--------|-------|
| Wall time | 780.2s |
| Peak memory | 46.2 MiB |
| Avg memory | 38.2 MiB |
| CPU user | 903.5s |
| CPU sys | 0.8s |
| Peak spill | 0 B |
</details>
---
[File an issue](https://github.com/adriangb/datafusion-benchmarking/issues) against this benchmark runner
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: bound work over dictionary values by the batch's row count [datafusion]
Posted by "jayzhan211 (via GitHub)" <gi...@apache.org>.
jayzhan211 commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6382310703
run benchmark clickbench_partitioned
baseline:
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
changed:
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: bound work over dictionary values by the batch's row count [datafusion]
Posted by "jayzhan211 (via GitHub)" <gi...@apache.org>.
jayzhan211 commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6382311015
run benchmark with_hashes
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: bound work over dictionary values by the batch's row count [datafusion]
Posted by "jayzhan211 (via GitHub)" <gi...@apache.org>.
jayzhan211 commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6384245088
run benchmark with_hashes
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: bound work over dictionary values by the batch's row count [datafusion]
Posted by "jayzhan211 (via GitHub) via github" <gi...@datafusion.apache.org>.
jayzhan211 commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6703629174
run benchmark clickbench_partitioned
env:
DATAFUSION_EXECUTION_TARGET_PARTITIONS: "32"
baseline:
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
changed:
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: bound work over dictionary values by the batch's row count [datafusion]
Posted by "adriangbot (via GitHub)" <gi...@apache.org>.
adriangbot commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6384450214
π€ Benchmark completed (GKE) | [trigger](https://github.com/apache/datafusion/pull/26703#issuecomment-6384244706)
**Instance:** `c4a-highmem-16` (12 vCPU / 65 GiB)
Comparing perf/dictionary-work-bounded-by-rows (c459abafcdb512f08eec3bf575322e30cb4ba0d2) to 039c0b9 (merge-base) [diff](https://github.com/apache/datafusion/compare/039c0b99d5b05e73ff5def029c0131b76b481c6f..c459abafcdb512f08eec3bf575322e30cb4ba0d2)
<details><summary>Run configuration</summary>
```yaml
run benchmark clickbench_partitioned
baseline:
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
changed:
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
```
</details>
<details><summary>CPU Details (lscpu)</summary>
```
Architecture: aarch64
CPU op-mode(s): 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Vendor ID: ARM
Model name: Neoverse-V2
Model: 1
Thread(s) per core: 1
Core(s) per cluster: 16
Socket(s): -
Cluster(s): 1
Stepping: r0p1
BogoMIPS: 2000.00
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache: 1 MiB (16 instances)
L1i cache: 1 MiB (16 instances)
L2 cache: 32 MiB (16 instances)
L3 cache: 80 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-15
Vulnerability Gather data sampling: Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1: Mitigation; __user pointer sanitization
Vulnerability Spectre v2: Mitigation; CSV2, BHB
Vulnerability Srbds: Not affected
Vulnerability Tsa: Not affected
Vulnerability Tsx async abort: Not affected
Vulnerability Vmscape: Not affected
```
</details>
<details><summary>Details</summary>
<p>
```
Comparing HEAD and perf_dictionary-work-bounded-by-rows
--------------------
Benchmark clickbench_partitioned.json
--------------------
βββββββββββββ³ββββββββββββββ³βββββββββββββββββββββββββββββββββββββββ³ββββββββββββββββ
β Query β HEAD β perf_dictionary-work-bounded-by-rows β Change β
β‘βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β QQuery 0 β 1.17 ms β 1.15 ms β no change β
β QQuery 1 β 11.27 ms β 11.32 ms β no change β
β QQuery 2 β 35.24 ms β 35.62 ms β no change β
β QQuery 3 β 31.22 ms β 31.40 ms β no change β
β QQuery 4 β 235.39 ms β 236.81 ms β no change β
β QQuery 5 β 1515.65 ms β 1094.18 ms β +1.39x faster β
β QQuery 6 β 1.17 ms β 1.18 ms β no change β
β QQuery 7 β 12.31 ms β 12.32 ms β no change β
β QQuery 8 β 333.39 ms β 337.15 ms β no change β
β QQuery 9 β 479.08 ms β 472.68 ms β no change β
β QQuery 10 β 199.35 ms β 200.11 ms β no change β
β QQuery 11 β 209.02 ms β 210.18 ms β no change β
β QQuery 12 β 1498.52 ms β 1112.52 ms β +1.35x faster β
β QQuery 13 β 2048.95 ms β 1526.42 ms β +1.34x faster β
β QQuery 14 β 1662.42 ms β 1205.47 ms β +1.38x faster β
β QQuery 15 β 294.08 ms β 298.70 ms β no change β
β QQuery 16 β 3609.72 ms β 2263.87 ms β +1.59x faster β
β QQuery 17 β 3747.63 ms β 2217.05 ms β +1.69x faster β
β QQuery 18 β 6892.81 ms β 3736.22 ms β +1.84x faster β
β QQuery 19 β 27.10 ms β 27.19 ms β no change β
β QQuery 20 β 1050.54 ms β 1038.77 ms β no change β
β QQuery 21 β 1358.81 ms β 1364.57 ms β no change β
β QQuery 22 β 3223.32 ms β 3219.57 ms β no change β
β QQuery 23 β 9263.41 ms β 9316.74 ms β no change β
β QQuery 24 β 95.94 ms β 94.98 ms β no change β
β QQuery 25 β 352.73 ms β 350.43 ms β no change β
β QQuery 26 β 95.88 ms β 96.92 ms β no change β
β QQuery 27 β 1134.83 ms β 1133.92 ms β no change β
β QQuery 28 β 3522.69 ms β 3504.72 ms β no change β
β QQuery 29 β 38.75 ms β 38.56 ms β no change β
β QQuery 30 β 545.35 ms β 547.09 ms β no change β
β QQuery 31 β 541.69 ms β 524.26 ms β no change β
β QQuery 32 β 1065.13 ms β 1005.78 ms β +1.06x faster β
β QQuery 33 β 13687.03 ms β 7451.46 ms β +1.84x faster β
β QQuery 34 β 14076.45 ms β 7387.38 ms β +1.91x faster β
β QQuery 35 β 295.85 ms β 300.27 ms β no change β
β QQuery 36 β 171.29 ms β 135.68 ms β +1.26x faster β
β QQuery 37 β 96.34 ms β 95.96 ms β no change β
β QQuery 38 β 80.57 ms β 84.27 ms β no change β
β QQuery 39 β 395.22 ms β 282.80 ms β +1.40x faster β
β QQuery 40 β 14.17 ms β 13.77 ms β no change β
β QQuery 41 β 13.82 ms β 13.66 ms β no change β
β QQuery 42 β 13.26 ms β 12.80 ms β no change β
βββββββββββββ΄ββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ³βββββββββββββ
β Benchmark Summary β β
β‘βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β Total Time (HEAD) β 73978.57ms β
β Total Time (perf_dictionary-work-bounded-by-rows) β 53045.92ms β
β Average Time (HEAD) β 1720.43ms β
β Average Time (perf_dictionary-work-bounded-by-rows) β 1233.63ms β
β Queries Faster β 12 β
β Queries Slower β 0 β
β Queries with No Change β 31 β
β Queries with Failure β 0 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββ
Distribution per query (min / mean Β±stddev / max):
Comparing HEAD and perf_dictionary-work-bounded-by-rows
--------------------
Benchmark clickbench_partitioned.json
--------------------
βββββββββββββ³ββββββββββββββββββββββββββββββββββββββββββββ³βββββββββββββββββββββββββββββββββββββββββ³ββββββββββββββββ
β Query β HEAD β perf_dictionary-work-bounded-by-rows β Change β
β‘βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β QQuery 0 β 1.17 / 4.28 Β±6.07 / 16.41 ms β 1.15 / 4.24 Β±6.04 / 16.32 ms β no change β
β QQuery 1 β 11.27 / 11.44 Β±0.18 / 11.77 ms β 11.32 / 11.46 Β±0.12 / 11.69 ms β no change β
β QQuery 2 β 35.24 / 35.89 Β±0.66 / 37.15 ms β 35.62 / 35.90 Β±0.21 / 36.22 ms β no change β
β QQuery 3 β 31.22 / 32.15 Β±1.36 / 34.80 ms β 31.40 / 31.71 Β±0.19 / 31.99 ms β no change β
β QQuery 4 β 235.39 / 240.93 Β±2.94 / 243.52 ms β 236.81 / 241.77 Β±3.26 / 245.73 ms β no change β
β QQuery 5 β 1515.65 / 1540.32 Β±25.16 / 1586.48 ms β 1094.18 / 1110.10 Β±13.17 / 1128.44 ms β +1.39x faster β
β QQuery 6 β 1.17 / 1.34 Β±0.23 / 1.78 ms β 1.18 / 1.34 Β±0.24 / 1.81 ms β no change β
β QQuery 7 β 12.31 / 12.48 Β±0.11 / 12.60 ms β 12.32 / 12.56 Β±0.18 / 12.87 ms β no change β
β QQuery 8 β 333.39 / 342.43 Β±7.88 / 356.90 ms β 337.15 / 340.02 Β±2.52 / 343.31 ms β no change β
β QQuery 9 β 479.08 / 487.55 Β±5.13 / 493.13 ms β 472.68 / 482.44 Β±10.12 / 499.64 ms β no change β
β QQuery 10 β 199.35 / 202.67 Β±5.29 / 213.21 ms β 200.11 / 200.86 Β±0.67 / 201.91 ms β no change β
β QQuery 11 β 209.02 / 210.23 Β±0.73 / 210.97 ms β 210.18 / 210.72 Β±0.52 / 211.41 ms β no change β
β QQuery 12 β 1498.52 / 1533.20 Β±34.09 / 1596.00 ms β 1112.52 / 1142.68 Β±28.52 / 1186.19 ms β +1.34x faster β
β QQuery 13 β 2048.95 / 2488.82 Β±393.43 / 3113.35 ms β 1526.42 / 1584.03 Β±35.79 / 1635.46 ms β +1.57x faster β
β QQuery 14 β 1662.42 / 1719.91 Β±40.81 / 1777.37 ms β 1205.47 / 1242.39 Β±35.66 / 1309.34 ms β +1.38x faster β
β QQuery 15 β 294.08 / 298.89 Β±3.24 / 303.05 ms β 298.70 / 307.43 Β±9.69 / 325.99 ms β no change β
β QQuery 16 β 3609.72 / 3867.65 Β±137.51 / 4009.66 ms β 2263.87 / 2297.81 Β±31.25 / 2334.71 ms β +1.68x faster β
β QQuery 17 β 3747.63 / 3843.11 Β±74.04 / 3942.25 ms β 2217.05 / 2302.45 Β±44.28 / 2345.33 ms β +1.67x faster β
β QQuery 18 β 6892.81 / 7065.45 Β±160.82 / 7292.69 ms β 3736.22 / 3805.22 Β±55.69 / 3892.04 ms β +1.86x faster β
β QQuery 19 β 27.10 / 35.24 Β±15.40 / 66.02 ms β 27.19 / 27.33 Β±0.14 / 27.58 ms β +1.29x faster β
β QQuery 20 β 1050.54 / 1063.16 Β±9.10 / 1073.89 ms β 1038.77 / 1064.25 Β±17.63 / 1086.22 ms β no change β
β QQuery 21 β 1358.81 / 1366.90 Β±6.48 / 1378.16 ms β 1364.57 / 1375.31 Β±7.42 / 1384.36 ms β no change β
β QQuery 22 β 3223.32 / 3277.39 Β±56.74 / 3379.84 ms β 3219.57 / 3300.36 Β±99.21 / 3487.52 ms β no change β
β QQuery 23 β 9263.41 / 9399.17 Β±166.02 / 9718.72 ms β 9316.74 / 9404.48 Β±116.93 / 9632.05 ms β no change β
β QQuery 24 β 95.94 / 156.91 Β±116.11 / 389.07 ms β 94.98 / 148.98 Β±104.80 / 358.55 ms β +1.05x faster β
β QQuery 25 β 352.73 / 354.94 Β±2.13 / 358.02 ms β 350.43 / 355.22 Β±3.84 / 361.58 ms β no change β
β QQuery 26 β 95.88 / 98.76 Β±3.17 / 104.65 ms β 96.92 / 97.71 Β±0.75 / 99.07 ms β no change β
β QQuery 27 β 1134.83 / 1142.27 Β±4.49 / 1148.55 ms β 1133.92 / 1153.86 Β±13.63 / 1170.73 ms β no change β
β QQuery 28 β 3522.69 / 3551.04 Β±24.51 / 3585.57 ms β 3504.72 / 3543.84 Β±33.68 / 3590.91 ms β no change β
β QQuery 29 β 38.75 / 46.96 Β±9.88 / 60.77 ms β 38.56 / 39.02 Β±0.27 / 39.41 ms β +1.20x faster β
β QQuery 30 β 545.35 / 548.78 Β±3.47 / 555.01 ms β 547.09 / 555.82 Β±6.94 / 566.08 ms β no change β
β QQuery 31 β 541.69 / 556.83 Β±16.94 / 589.79 ms β 524.26 / 557.03 Β±26.06 / 583.66 ms β no change β
β QQuery 32 β 1065.13 / 1256.06 Β±232.56 / 1705.26 ms β 1005.78 / 1067.35 Β±44.34 / 1127.33 ms β +1.18x faster β
β QQuery 33 β 13687.03 / 14496.46 Β±676.07 / 15320.67 ms β 7451.46 / 7751.55 Β±240.88 / 8101.21 ms β +1.87x faster β
β QQuery 34 β 14076.45 / 15055.05 Β±856.04 / 16530.37 ms β 7387.38 / 7577.98 Β±194.05 / 7919.90 ms β +1.99x faster β
β QQuery 35 β 295.85 / 323.91 Β±33.52 / 387.18 ms β 300.27 / 336.51 Β±33.94 / 395.51 ms β no change β
β QQuery 36 β 171.29 / 194.41 Β±22.42 / 236.04 ms β 135.68 / 150.20 Β±10.10 / 163.97 ms β +1.29x faster β
β QQuery 37 β 96.34 / 97.78 Β±1.15 / 99.58 ms β 95.96 / 100.56 Β±3.49 / 106.69 ms β no change β
β QQuery 38 β 80.57 / 85.23 Β±4.21 / 93.13 ms β 84.27 / 86.72 Β±1.67 / 89.52 ms β no change β
β QQuery 39 β 395.22 / 407.55 Β±13.83 / 433.75 ms β 282.80 / 287.43 Β±3.41 / 292.15 ms β +1.42x faster β
β QQuery 40 β 14.17 / 14.65 Β±0.46 / 15.43 ms β 13.77 / 16.86 Β±4.03 / 24.83 ms β 1.15x slower β
β QQuery 41 β 13.82 / 14.01 Β±0.21 / 14.39 ms β 13.66 / 16.48 Β±4.77 / 26.00 ms β 1.18x slower β
β QQuery 42 β 13.26 / 13.39 Β±0.08 / 13.50 ms β 12.80 / 12.89 Β±0.08 / 13.03 ms β no change β
βββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ³βββββββββββββ
β Benchmark Summary β β
β‘βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β Total Time (HEAD) β 77495.59ms β
β Total Time (perf_dictionary-work-bounded-by-rows) β 54392.88ms β
β Average Time (HEAD) β 1802.22ms β
β Average Time (perf_dictionary-work-bounded-by-rows) β 1264.95ms β
β Queries Faster β 15 β
β Queries Slower β 2 β
β Queries with No Change β 26 β
β Queries with Failure β 0 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββ
```
</p>
</details>
<details><summary>Resource Usage</summary>
**clickbench_partitioned β base (merge-base)**
| Metric | Value |
|--------|-------|
| Wall time | 390.1s |
| Peak memory | 13.5 GiB |
| Avg memory | 6.1 GiB |
| CPU user | 3364.5s |
| CPU sys | 209.3s |
| Peak spill | 0 B |
**clickbench_partitioned β branch**
| Metric | Value |
|--------|-------|
| Wall time | 275.1s |
| Peak memory | 15.7 GiB |
| Avg memory | 6.3 GiB |
| CPU user | 2159.7s |
| CPU sys | 178.4s |
| Peak spill | 0 B |
</details>
---
[File an issue](https://github.com/adriangb/datafusion-benchmarking/issues) against this benchmark runner
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: bound work over dictionary values by the batch's row count [datafusion]
Posted by "adriangbot (via GitHub)" <gi...@apache.org>.
adriangbot commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6382340256
π€ Benchmark running (GKE) | [trigger](https://github.com/apache/datafusion/pull/26703#issuecomment-6382311015)
**Instance:** `c4a-highmem-16` (12 vCPU / 65 GiB) | `Linux bench-c6382311015-3817-n986l 6.12.105+ #1 SMP Sat Sep 5 07:54:11 UTC 2026 aarch64 GNU/Linux`
<details><summary>CPU Details (lscpu)</summary>
```
Architecture: aarch64
CPU op-mode(s): 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Vendor ID: ARM
Model name: Neoverse-V2
Model: 1
Thread(s) per core: 1
Core(s) per cluster: 16
Socket(s): -
Cluster(s): 1
Stepping: r0p1
BogoMIPS: 2000.00
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache: 1 MiB (16 instances)
L1i cache: 1 MiB (16 instances)
L2 cache: 32 MiB (16 instances)
L3 cache: 80 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-15
Vulnerability Gather data sampling: Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1: Mitigation; __user pointer sanitization
Vulnerability Spectre v2: Mitigation; CSV2, BHB
Vulnerability Srbds: Not affected
Vulnerability Tsa: Not affected
Vulnerability Tsx async abort: Not affected
Vulnerability Vmscape: Not affected
```
</details>
Comparing perf/dictionary-work-bounded-by-rows (bc3d609b91b7452d45eefbf3a64dfe5cc311823d) to 039c0b9 (merge-base) [diff](https://github.com/apache/datafusion/compare/039c0b99d5b05e73ff5def029c0131b76b481c6f..bc3d609b91b7452d45eefbf3a64dfe5cc311823d)
<details><summary>Run configuration</summary>
```yaml
run benchmark with_hashes
```
</details>
Results will be posted here when complete
---
[File an issue](https://github.com/adriangb/datafusion-benchmarking/issues) against this benchmark runner
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: bound work over dictionary values by the batch's row count [datafusion]
Posted by "jayzhan211 (via GitHub) via github" <gi...@datafusion.apache.org>.
jayzhan211 commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6703380077
run benchmark clickbench_partitioned
baseline:
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
changed:
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: stop dictionary work growing with the group count [datafusion]
Posted by "adriangbot (via GitHub) via github" <gi...@datafusion.apache.org>.
adriangbot commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6703785615
π€ Benchmark completed (GKE) | [trigger](https://github.com/apache/datafusion/pull/26703#issuecomment-6703629174)
**Instance:** `c4a-highmem-16` (12 vCPU / 65 GiB)
Comparing perf/dictionary-work-bounded-by-rows (cd7235fe7b7b4ad63d958c2f17bf71f7108bcb44) to 4bf32cb (merge-base) [diff](https://github.com/apache/datafusion/compare/4bf32cb46df983f8efd20d259e9e45827dce8f43..cd7235fe7b7b4ad63d958c2f17bf71f7108bcb44)
<details><summary>Run configuration</summary>
```yaml
run benchmark clickbench_partitioned
env:
DATAFUSION_EXECUTION_TARGET_PARTITIONS: "32"
baseline:
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
changed:
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
```
</details>
<details><summary>CPU Details (lscpu)</summary>
```
Architecture: aarch64
CPU op-mode(s): 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Vendor ID: ARM
Model name: Neoverse-V2
Model: 1
Thread(s) per core: 1
Core(s) per cluster: 16
Socket(s): -
Cluster(s): 1
Stepping: r0p1
BogoMIPS: 2000.00
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache: 1 MiB (16 instances)
L1i cache: 1 MiB (16 instances)
L2 cache: 32 MiB (16 instances)
L3 cache: 80 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-15
Vulnerability Gather data sampling: Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1: Mitigation; __user pointer sanitization
Vulnerability Spectre v2: Mitigation; CSV2, BHB
Vulnerability Srbds: Not affected
Vulnerability Tsa: Not affected
Vulnerability Tsx async abort: Not affected
Vulnerability Vmscape: Not affected
```
</details>
<details><summary>Details</summary>
<p>
```
Comparing HEAD and perf_dictionary-work-bounded-by-rows
--------------------
Benchmark clickbench_partitioned.json
--------------------
βββββββββββββ³ββββββββββββββ³βββββββββββββββββββββββββββββββββββββββ³ββββββββββββββββ
β Query β HEAD β perf_dictionary-work-bounded-by-rows β Change β
β‘βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β QQuery 0 β 1.22 ms β 1.20 ms β no change β
β QQuery 1 β 11.21 ms β 11.21 ms β no change β
β QQuery 2 β 33.69 ms β 33.91 ms β no change β
β QQuery 3 β 28.06 ms β 27.59 ms β no change β
β QQuery 4 β 218.55 ms β 215.33 ms β no change β
β QQuery 5 β 1397.26 ms β 835.29 ms β +1.67x faster β
β QQuery 6 β 1.24 ms β 1.21 ms β no change β
β QQuery 7 β 13.57 ms β 13.51 ms β no change β
β QQuery 8 β 315.62 ms β 312.60 ms β no change β
β QQuery 9 β 395.84 ms β 390.54 ms β no change β
β QQuery 10 β 196.69 ms β 195.99 ms β no change β
β QQuery 11 β 206.70 ms β 206.16 ms β no change β
β QQuery 12 β 1422.01 ms β 815.67 ms β +1.74x faster β
β QQuery 13 β 2034.97 ms β 1306.69 ms β +1.56x faster β
β QQuery 14 β 1395.83 ms β 852.77 ms β +1.64x faster β
β QQuery 15 β 266.73 ms β 267.63 ms β no change β
β QQuery 16 β 2970.21 ms β 1270.90 ms β +2.34x faster β
β QQuery 17 β 2934.88 ms β 1219.72 ms β +2.41x faster β
β QQuery 18 β 5408.21 ms β 1935.80 ms β +2.79x faster β
β QQuery 19 β 25.67 ms β 25.66 ms β no change β
β QQuery 20 β 1027.12 ms β 984.54 ms β no change β
β QQuery 21 β 1363.75 ms β 1347.18 ms β no change β
β QQuery 22 β 3146.60 ms β 3152.58 ms β no change β
β QQuery 23 β 8120.86 ms β 8364.02 ms β no change β
β QQuery 24 β 96.08 ms β 106.13 ms β 1.10x slower β
β QQuery 25 β 344.39 ms β 339.56 ms β no change β
β QQuery 26 β 101.07 ms β 98.06 ms β no change β
β QQuery 27 β 1128.15 ms β 1097.49 ms β no change β
β QQuery 28 β 2651.10 ms β 2498.12 ms β +1.06x faster β
β QQuery 29 β 37.43 ms β 36.78 ms β no change β
β QQuery 30 β 518.67 ms β 524.85 ms β no change β
β QQuery 31 β 542.93 ms β 542.37 ms β no change β
β QQuery 32 β 990.34 ms β 944.13 ms β no change β
β QQuery 33 β 10206.15 ms β 3600.67 ms β +2.83x faster β
β QQuery 34 β 9970.78 ms β 3619.34 ms β +2.75x faster β
β QQuery 35 β 266.32 ms β 262.69 ms β no change β
β QQuery 36 β 222.89 ms β 156.44 ms β +1.42x faster β
β QQuery 37 β 99.84 ms β 97.62 ms β no change β
β QQuery 38 β 84.63 ms β 81.71 ms β no change β
β QQuery 39 β 444.18 ms β 333.65 ms β +1.33x faster β
β QQuery 40 β 16.06 ms β 16.59 ms β no change β
β QQuery 41 β 15.44 ms β 15.67 ms β no change β
β QQuery 42 β 15.68 ms β 15.65 ms β no change β
βββββββββββββ΄ββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ³βββββββββββββ
β Benchmark Summary β β
β‘βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β Total Time (HEAD) β 60688.58ms β
β Total Time (perf_dictionary-work-bounded-by-rows) β 38175.23ms β
β Average Time (HEAD) β 1411.36ms β
β Average Time (perf_dictionary-work-bounded-by-rows) β 887.80ms β
β Queries Faster β 12 β
β Queries Slower β 1 β
β Queries with No Change β 30 β
β Queries with Failure β 0 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββ
Distribution per query (min / mean Β±stddev / max):
Comparing HEAD and perf_dictionary-work-bounded-by-rows
--------------------
Benchmark clickbench_partitioned.json
--------------------
βββββββββββββ³ββββββββββββββββββββββββββββββββββββββββββββ³βββββββββββββββββββββββββββββββββββββββββ³ββββββββββββββββ
β Query β HEAD β perf_dictionary-work-bounded-by-rows β Change β
β‘βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β QQuery 0 β 1.22 / 1.84 Β±1.10 / 4.03 ms β 1.20 / 1.79 Β±1.11 / 4.00 ms β no change β
β QQuery 1 β 11.21 / 11.58 Β±0.20 / 11.84 ms β 11.21 / 11.47 Β±0.15 / 11.67 ms β no change β
β QQuery 2 β 33.69 / 34.08 Β±0.41 / 34.72 ms β 33.91 / 34.15 Β±0.25 / 34.58 ms β no change β
β QQuery 3 β 28.06 / 29.17 Β±0.94 / 30.68 ms β 27.59 / 28.20 Β±0.60 / 29.21 ms β no change β
β QQuery 4 β 218.55 / 220.49 Β±1.65 / 222.35 ms β 215.33 / 217.54 Β±2.22 / 221.45 ms β no change β
β QQuery 5 β 1397.26 / 1419.16 Β±24.31 / 1463.77 ms β 835.29 / 853.12 Β±13.50 / 868.23 ms β +1.66x faster β
β QQuery 6 β 1.24 / 1.42 Β±0.27 / 1.95 ms β 1.21 / 1.37 Β±0.25 / 1.85 ms β no change β
β QQuery 7 β 13.57 / 13.75 Β±0.10 / 13.84 ms β 13.51 / 13.76 Β±0.14 / 13.93 ms β no change β
β QQuery 8 β 315.62 / 319.73 Β±2.31 / 322.64 ms β 312.60 / 317.14 Β±5.42 / 326.76 ms β no change β
β QQuery 9 β 395.84 / 414.99 Β±15.37 / 434.36 ms β 390.54 / 403.38 Β±13.27 / 428.22 ms β no change β
β QQuery 10 β 196.69 / 202.75 Β±8.19 / 218.96 ms β 195.99 / 197.99 Β±2.56 / 203.02 ms β no change β
β QQuery 11 β 206.70 / 209.66 Β±4.64 / 218.89 ms β 206.16 / 207.41 Β±1.21 / 209.48 ms β no change β
β QQuery 12 β 1422.01 / 1497.08 Β±40.76 / 1535.28 ms β 815.67 / 841.26 Β±13.89 / 853.66 ms β +1.78x faster β
β QQuery 13 β 2034.97 / 2100.22 Β±57.35 / 2176.58 ms β 1306.69 / 1335.37 Β±18.58 / 1356.27 ms β +1.57x faster β
β QQuery 14 β 1395.83 / 1464.12 Β±70.68 / 1567.33 ms β 852.77 / 878.67 Β±24.04 / 912.14 ms β +1.67x faster β
β QQuery 15 β 266.73 / 286.37 Β±27.38 / 340.46 ms β 267.63 / 273.77 Β±6.60 / 286.52 ms β no change β
β QQuery 16 β 2970.21 / 3230.42 Β±404.69 / 4028.42 ms β 1270.90 / 1302.63 Β±24.17 / 1332.51 ms β +2.48x faster β
β QQuery 17 β 2934.88 / 3325.01 Β±336.74 / 3947.87 ms β 1219.72 / 1238.97 Β±18.82 / 1271.81 ms β +2.68x faster β
β QQuery 18 β 5408.21 / 5820.59 Β±323.67 / 6225.61 ms β 1935.80 / 1974.98 Β±31.21 / 2012.33 ms β +2.95x faster β
β QQuery 19 β 25.67 / 26.20 Β±0.52 / 26.85 ms β 25.66 / 26.14 Β±0.52 / 26.97 ms β no change β
β QQuery 20 β 1027.12 / 1041.36 Β±13.48 / 1064.36 ms β 984.54 / 1006.77 Β±22.26 / 1045.24 ms β no change β
β QQuery 21 β 1363.75 / 1398.14 Β±34.09 / 1459.16 ms β 1347.18 / 1367.37 Β±15.28 / 1389.79 ms β no change β
β QQuery 22 β 3146.60 / 3215.30 Β±57.82 / 3317.98 ms β 3152.58 / 3178.14 Β±33.21 / 3243.31 ms β no change β
β QQuery 23 β 8120.86 / 8546.61 Β±230.84 / 8815.21 ms β 8364.02 / 8461.77 Β±108.13 / 8616.74 ms β no change β
β QQuery 24 β 96.08 / 107.46 Β±11.40 / 127.75 ms β 106.13 / 123.83 Β±23.92 / 170.51 ms β 1.15x slower β
β QQuery 25 β 344.39 / 348.53 Β±3.14 / 353.80 ms β 339.56 / 350.66 Β±5.78 / 355.73 ms β no change β
β QQuery 26 β 101.07 / 108.89 Β±7.65 / 122.67 ms β 98.06 / 99.92 Β±0.97 / 100.85 ms β +1.09x faster β
β QQuery 27 β 1128.15 / 1137.03 Β±5.21 / 1142.40 ms β 1097.49 / 1116.63 Β±16.73 / 1144.68 ms β no change β
β QQuery 28 β 2651.10 / 2674.28 Β±13.47 / 2686.61 ms β 2498.12 / 2516.08 Β±17.78 / 2548.42 ms β +1.06x faster β
β QQuery 29 β 37.43 / 52.57 Β±18.27 / 85.55 ms β 36.78 / 37.29 Β±0.51 / 38.18 ms β +1.41x faster β
β QQuery 30 β 518.67 / 522.83 Β±4.93 / 531.55 ms β 524.85 / 561.95 Β±23.10 / 592.04 ms β 1.07x slower β
β QQuery 31 β 542.93 / 565.68 Β±18.43 / 595.62 ms β 542.37 / 569.59 Β±29.65 / 623.62 ms β no change β
β QQuery 32 β 990.34 / 1031.83 Β±47.96 / 1107.60 ms β 944.13 / 1004.98 Β±54.74 / 1107.59 ms β no change β
β QQuery 33 β 10206.15 / 10815.42 Β±520.80 / 11580.40 ms β 3600.67 / 3741.22 Β±96.66 / 3867.77 ms β +2.89x faster β
β QQuery 34 β 9970.78 / 10950.65 Β±531.49 / 11479.40 ms β 3619.34 / 3726.70 Β±74.62 / 3832.22 ms β +2.94x faster β
β QQuery 35 β 266.32 / 308.54 Β±46.81 / 394.56 ms β 262.69 / 280.32 Β±16.01 / 306.41 ms β +1.10x faster β
β QQuery 36 β 222.89 / 230.75 Β±6.09 / 241.56 ms β 156.44 / 175.82 Β±22.03 / 218.26 ms β +1.31x faster β
β QQuery 37 β 99.84 / 102.98 Β±2.04 / 105.74 ms β 97.62 / 101.22 Β±2.22 / 104.25 ms β no change β
β QQuery 38 β 84.63 / 87.72 Β±2.11 / 90.72 ms β 81.71 / 89.31 Β±6.80 / 99.18 ms β no change β
β QQuery 39 β 444.18 / 463.45 Β±16.19 / 487.12 ms β 333.65 / 357.31 Β±15.88 / 378.85 ms β +1.30x faster β
β QQuery 40 β 16.06 / 20.83 Β±7.92 / 36.63 ms β 16.59 / 16.89 Β±0.20 / 17.18 ms β +1.23x faster β
β QQuery 41 β 15.44 / 19.43 Β±7.57 / 34.56 ms β 15.67 / 20.02 Β±7.91 / 35.82 ms β no change β
β QQuery 42 β 15.68 / 18.59 Β±4.38 / 27.24 ms β 15.65 / 15.91 Β±0.23 / 16.19 ms β +1.17x faster β
βββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ³βββββββββββββ
β Benchmark Summary β β
β‘βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β Total Time (HEAD) β 64397.48ms β
β Total Time (perf_dictionary-work-bounded-by-rows) β 39078.79ms β
β Average Time (HEAD) β 1497.62ms β
β Average Time (perf_dictionary-work-bounded-by-rows) β 908.81ms β
β Queries Faster β 17 β
β Queries Slower β 2 β
β Queries with No Change β 24 β
β Queries with Failure β 0 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββ
```
</p>
</details>
<details><summary>Resource Usage</summary>
**clickbench_partitioned β base (merge-base)**
| Metric | Value |
|--------|-------|
| Wall time | 325.1s |
| Peak memory | 13.3 GiB |
| Avg memory | 6.3 GiB |
| CPU user | 2592.1s |
| CPU sys | 187.9s |
| Peak spill | 0 B |
**clickbench_partitioned β branch**
| Metric | Value |
|--------|-------|
| Wall time | 200.0s |
| Peak memory | 12.9 GiB |
| Avg memory | 5.7 GiB |
| CPU user | 1895.4s |
| CPU sys | 127.5s |
| Peak spill | 0 B |
</details>
---
[File an issue](https://github.com/adriangb/datafusion-benchmarking/issues) against this benchmark runner
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: stop dictionary work growing with the group count [datafusion]
Posted by "adriangbot (via GitHub) via github" <gi...@datafusion.apache.org>.
adriangbot commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6703731204
π€ Benchmark completed (GKE) | [trigger](https://github.com/apache/datafusion/pull/26703#issuecomment-6703629370)
**Instance:** `c4a-highmem-16` (12 vCPU / 65 GiB)
Comparing perf/dictionary-work-bounded-by-rows (cd7235fe7b7b4ad63d958c2f17bf71f7108bcb44) to 4bf32cb (merge-base) [diff](https://github.com/apache/datafusion/compare/4bf32cb46df983f8efd20d259e9e45827dce8f43..cd7235fe7b7b4ad63d958c2f17bf71f7108bcb44)
<details><summary>Run configuration</summary>
```yaml
run benchmark clickbench_partitioned
```
</details>
<details><summary>CPU Details (lscpu)</summary>
```
Architecture: aarch64
CPU op-mode(s): 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Vendor ID: ARM
Model name: Neoverse-V2
Model: 1
Thread(s) per core: 1
Core(s) per cluster: 16
Socket(s): -
Cluster(s): 1
Stepping: r0p1
BogoMIPS: 2000.00
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache: 1 MiB (16 instances)
L1i cache: 1 MiB (16 instances)
L2 cache: 32 MiB (16 instances)
L3 cache: 80 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-15
Vulnerability Gather data sampling: Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1: Mitigation; __user pointer sanitization
Vulnerability Spectre v2: Mitigation; CSV2, BHB
Vulnerability Srbds: Not affected
Vulnerability Tsa: Not affected
Vulnerability Tsx async abort: Not affected
Vulnerability Vmscape: Not affected
```
</details>
<details><summary>Details</summary>
<p>
```
Comparing HEAD and perf_dictionary-work-bounded-by-rows
--------------------
Benchmark clickbench_partitioned.json
--------------------
βββββββββββββ³βββββββββββββ³βββββββββββββββββββββββββββββββββββββββ³ββββββββββββββββ
β Query β HEAD β perf_dictionary-work-bounded-by-rows β Change β
β‘ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β QQuery 0 β 1.52 ms β 1.19 ms β +1.28x faster β
β QQuery 1 β 12.20 ms β 11.29 ms β +1.08x faster β
β QQuery 2 β 35.88 ms β 34.57 ms β no change β
β QQuery 3 β 32.86 ms β 30.41 ms β +1.08x faster β
β QQuery 4 β 282.50 ms β 230.71 ms β +1.22x faster β
β QQuery 5 β 312.22 ms β 275.44 ms β +1.13x faster β
β QQuery 6 β 1.48 ms β 1.35 ms β +1.10x faster β
β QQuery 7 β 14.07 ms β 13.82 ms β no change β
β QQuery 8 β 330.39 ms β 330.86 ms β no change β
β QQuery 9 β 473.45 ms β 457.77 ms β no change β
β QQuery 10 β 64.46 ms β 64.36 ms β no change β
β QQuery 11 β 74.09 ms β 74.86 ms β no change β
β QQuery 12 β 259.09 ms β 257.78 ms β no change β
β QQuery 13 β 359.24 ms β 361.43 ms β no change β
β QQuery 14 β 277.28 ms β 274.89 ms β no change β
β QQuery 15 β 281.34 ms β 275.80 ms β no change β
β QQuery 16 β 616.82 ms β 623.89 ms β no change β
β QQuery 17 β 622.26 ms β 707.01 ms β 1.14x slower β
β QQuery 18 β 1198.49 ms β 1260.26 ms β 1.05x slower β
β QQuery 19 β 27.42 ms β 27.52 ms β no change β
β QQuery 20 β 520.24 ms β 517.92 ms β no change β
β QQuery 21 β 509.04 ms β 515.27 ms β no change β
β QQuery 22 β 977.47 ms β 974.27 ms β no change β
β QQuery 23 β 3046.51 ms β 3051.93 ms β no change β
β QQuery 24 β 40.50 ms β 40.84 ms β no change β
β QQuery 25 β 105.13 ms β 104.81 ms β no change β
β QQuery 26 β 40.49 ms β 40.92 ms β no change β
β QQuery 27 β 515.85 ms β 505.58 ms β no change β
β QQuery 28 β 2856.22 ms β 2871.32 ms β no change β
β QQuery 29 β 39.92 ms β 37.46 ms β +1.07x faster β
β QQuery 30 β 315.97 ms β 307.38 ms β no change β
β QQuery 31 β 275.09 ms β 271.01 ms β no change β
β QQuery 32 β 945.02 ms β 1085.29 ms β 1.15x slower β
β QQuery 33 β 1425.23 ms β 1433.14 ms β no change β
β QQuery 34 β 1430.36 ms β 1472.26 ms β no change β
β QQuery 35 β 286.38 ms β 299.79 ms β no change β
β QQuery 36 β 68.14 ms β 68.62 ms β no change β
β QQuery 37 β 34.87 ms β 34.35 ms β no change β
β QQuery 38 β 39.11 ms β 39.00 ms β no change β
β QQuery 39 β 141.64 ms β 137.40 ms β no change β
β QQuery 40 β 13.72 ms β 13.68 ms β no change β
β QQuery 41 β 13.30 ms β 13.06 ms β no change β
β QQuery 42 β 12.74 ms β 12.67 ms β no change β
βββββββββββββ΄βββββββββββββ΄βββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ³βββββββββββββ
β Benchmark Summary β β
β‘βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β Total Time (HEAD) β 18930.00ms β
β Total Time (perf_dictionary-work-bounded-by-rows) β 19163.14ms β
β Average Time (HEAD) β 440.23ms β
β Average Time (perf_dictionary-work-bounded-by-rows) β 445.65ms β
β Queries Faster β 7 β
β Queries Slower β 3 β
β Queries with No Change β 33 β
β Queries with Failure β 0 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββ
Distribution per query (min / mean Β±stddev / max):
Comparing HEAD and perf_dictionary-work-bounded-by-rows
--------------------
Benchmark clickbench_partitioned.json
--------------------
βββββββββββββ³βββββββββββββββββββββββββββββββββββββββββ³βββββββββββββββββββββββββββββββββββββββββ³ββββββββββββββββ
β Query β HEAD β perf_dictionary-work-bounded-by-rows β Change β
β‘ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β QQuery 0 β 1.52 / 2.14 Β±1.14 / 4.42 ms β 1.19 / 1.79 Β±1.09 / 3.97 ms β +1.19x faster β
β QQuery 1 β 12.20 / 12.35 Β±0.13 / 12.52 ms β 11.29 / 11.45 Β±0.10 / 11.55 ms β +1.08x faster β
β QQuery 2 β 35.88 / 36.56 Β±0.52 / 37.41 ms β 34.57 / 34.74 Β±0.09 / 34.80 ms β no change β
β QQuery 3 β 32.86 / 33.93 Β±0.94 / 35.37 ms β 30.41 / 30.83 Β±0.31 / 31.33 ms β +1.10x faster β
β QQuery 4 β 282.50 / 288.35 Β±5.39 / 297.76 ms β 230.71 / 236.72 Β±4.55 / 242.94 ms β +1.22x faster β
β QQuery 5 β 312.22 / 317.79 Β±5.42 / 327.43 ms β 275.44 / 303.13 Β±14.97 / 316.85 ms β no change β
β QQuery 6 β 1.48 / 1.67 Β±0.22 / 2.07 ms β 1.35 / 1.52 Β±0.23 / 1.98 ms β +1.10x faster β
β QQuery 7 β 14.07 / 14.45 Β±0.22 / 14.65 ms β 13.82 / 18.52 Β±9.25 / 37.02 ms β 1.28x slower β
β QQuery 8 β 330.39 / 349.31 Β±23.50 / 391.52 ms β 330.86 / 343.79 Β±15.85 / 370.39 ms β no change β
β QQuery 9 β 473.45 / 480.15 Β±5.24 / 487.19 ms β 457.77 / 463.97 Β±3.89 / 469.13 ms β no change β
β QQuery 10 β 64.46 / 64.73 Β±0.25 / 65.13 ms β 64.36 / 72.51 Β±14.87 / 102.21 ms β 1.12x slower β
β QQuery 11 β 74.09 / 74.76 Β±0.63 / 75.94 ms β 74.86 / 75.34 Β±0.52 / 76.27 ms β no change β
β QQuery 12 β 259.09 / 265.70 Β±5.24 / 274.06 ms β 257.78 / 268.86 Β±6.62 / 278.27 ms β no change β
β QQuery 13 β 359.24 / 385.80 Β±22.36 / 411.35 ms β 361.43 / 370.21 Β±9.88 / 388.89 ms β no change β
β QQuery 14 β 277.28 / 302.06 Β±20.27 / 327.64 ms β 274.89 / 292.51 Β±14.10 / 314.83 ms β no change β
β QQuery 15 β 281.34 / 299.45 Β±16.79 / 323.74 ms β 275.80 / 287.35 Β±8.53 / 299.51 ms β no change β
β QQuery 16 β 616.82 / 619.59 Β±2.74 / 624.21 ms β 623.89 / 665.37 Β±45.59 / 727.16 ms β 1.07x slower β
β QQuery 17 β 622.26 / 627.84 Β±4.36 / 635.06 ms β 707.01 / 718.28 Β±8.83 / 733.75 ms β 1.14x slower β
β QQuery 18 β 1198.49 / 1275.53 Β±59.86 / 1383.09 ms β 1260.26 / 1346.38 Β±79.86 / 1477.63 ms β 1.06x slower β
β QQuery 19 β 27.42 / 30.23 Β±4.66 / 39.50 ms β 27.52 / 29.49 Β±2.86 / 35.02 ms β no change β
β QQuery 20 β 520.24 / 527.72 Β±6.57 / 535.82 ms β 517.92 / 525.90 Β±9.42 / 542.62 ms β no change β
β QQuery 21 β 509.04 / 514.86 Β±4.33 / 522.22 ms β 515.27 / 538.28 Β±15.01 / 558.58 ms β no change β
β QQuery 22 β 977.47 / 989.48 Β±9.46 / 1006.08 ms β 974.27 / 988.73 Β±13.79 / 1014.25 ms β no change β
β QQuery 23 β 3046.51 / 3107.30 Β±58.37 / 3198.26 ms β 3051.93 / 3110.07 Β±54.48 / 3192.61 ms β no change β
β QQuery 24 β 40.50 / 44.34 Β±4.66 / 50.46 ms β 40.84 / 47.04 Β±7.28 / 59.41 ms β 1.06x slower β
β QQuery 25 β 105.13 / 109.01 Β±6.75 / 122.47 ms β 104.81 / 107.41 Β±3.82 / 114.71 ms β no change β
β QQuery 26 β 40.49 / 40.89 Β±0.50 / 41.87 ms β 40.92 / 42.40 Β±1.79 / 45.70 ms β no change β
β QQuery 27 β 515.85 / 521.65 Β±7.23 / 535.79 ms β 505.58 / 521.40 Β±13.55 / 546.23 ms β no change β
β QQuery 28 β 2856.22 / 3000.51 Β±101.59 / 3142.21 ms β 2871.32 / 2901.09 Β±30.52 / 2955.55 ms β no change β
β QQuery 29 β 39.92 / 43.31 Β±5.99 / 55.29 ms β 37.46 / 42.96 Β±10.13 / 63.21 ms β no change β
β QQuery 30 β 315.97 / 353.04 Β±24.99 / 394.38 ms β 307.38 / 311.54 Β±3.77 / 317.79 ms β +1.13x faster β
β QQuery 31 β 275.09 / 294.32 Β±12.80 / 308.63 ms β 271.01 / 285.52 Β±9.91 / 299.56 ms β no change β
β QQuery 32 β 945.02 / 972.91 Β±19.71 / 1005.41 ms β 1085.29 / 1110.61 Β±24.74 / 1148.64 ms β 1.14x slower β
β QQuery 33 β 1425.23 / 1495.24 Β±81.43 / 1652.07 ms β 1433.14 / 1579.71 Β±147.72 / 1790.31 ms β 1.06x slower β
β QQuery 34 β 1430.36 / 1462.99 Β±30.89 / 1504.05 ms β 1472.26 / 1559.99 Β±105.44 / 1758.71 ms β 1.07x slower β
β QQuery 35 β 286.38 / 320.89 Β±64.15 / 449.12 ms β 299.79 / 310.99 Β±11.57 / 326.69 ms β no change β
β QQuery 36 β 68.14 / 78.29 Β±13.43 / 103.91 ms β 68.62 / 72.90 Β±4.28 / 80.36 ms β +1.07x faster β
β QQuery 37 β 34.87 / 35.24 Β±0.37 / 35.89 ms β 34.35 / 36.18 Β±2.90 / 41.94 ms β no change β
β QQuery 38 β 39.11 / 41.87 Β±1.73 / 44.27 ms β 39.00 / 42.07 Β±2.51 / 45.19 ms β no change β
β QQuery 39 β 141.64 / 153.28 Β±9.32 / 170.19 ms β 137.40 / 147.95 Β±9.16 / 163.84 ms β no change β
β QQuery 40 β 13.72 / 14.67 Β±1.53 / 17.70 ms β 13.68 / 13.97 Β±0.30 / 14.51 ms β no change β
β QQuery 41 β 13.30 / 14.47 Β±2.12 / 18.71 ms β 13.06 / 14.63 Β±2.13 / 18.76 ms β no change β
β QQuery 42 β 12.74 / 12.94 Β±0.17 / 13.22 ms β 12.67 / 12.86 Β±0.16 / 13.14 ms β no change β
βββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ³βββββββββββββ
β Benchmark Summary β β
β‘βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β Total Time (HEAD) β 19631.63ms β
β Total Time (perf_dictionary-work-bounded-by-rows) β 19896.98ms β
β Average Time (HEAD) β 456.55ms β
β Average Time (perf_dictionary-work-bounded-by-rows) β 462.72ms β
β Queries Faster β 7 β
β Queries Slower β 9 β
β Queries with No Change β 27 β
β Queries with Failure β 0 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββ
```
</p>
</details>
<details><summary>Resource Usage</summary>
**clickbench_partitioned β base (merge-base)**
| Metric | Value |
|--------|-------|
| Wall time | 100.0s |
| Peak memory | 11.0 GiB |
| Avg memory | 4.7 GiB |
| CPU user | 1005.8s |
| CPU sys | 73.7s |
| Peak spill | 0 B |
**clickbench_partitioned β branch**
| Metric | Value |
|--------|-------|
| Wall time | 100.0s |
| Peak memory | 11.2 GiB |
| Avg memory | 4.3 GiB |
| CPU user | 1014.1s |
| CPU sys | 77.1s |
| Peak spill | 0 B |
</details>
---
[File an issue](https://github.com/adriangb/datafusion-benchmarking/issues) against this benchmark runner
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: bound work over dictionary values by the batch's row count [datafusion]
Posted by "adriangbot (via GitHub)" <gi...@apache.org>.
adriangbot commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6382333690
π€ Benchmark running (GKE) | [trigger](https://github.com/apache/datafusion/pull/26703#issuecomment-6382310703)
**Instance:** `c4a-highmem-16` (12 vCPU / 65 GiB) | `Linux bench-c6382310703-3816-s65nq 6.12.105+ #1 SMP Sat Sep 5 07:54:11 UTC 2026 aarch64 GNU/Linux`
<details><summary>CPU Details (lscpu)</summary>
```
Architecture: aarch64
CPU op-mode(s): 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Vendor ID: ARM
Model name: Neoverse-V2
Model: 1
Thread(s) per core: 1
Core(s) per cluster: 16
Socket(s): -
Cluster(s): 1
Stepping: r0p1
BogoMIPS: 2000.00
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache: 1 MiB (16 instances)
L1i cache: 1 MiB (16 instances)
L2 cache: 32 MiB (16 instances)
L3 cache: 80 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-15
Vulnerability Gather data sampling: Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1: Mitigation; __user pointer sanitization
Vulnerability Spectre v2: Mitigation; CSV2, BHB
Vulnerability Srbds: Not affected
Vulnerability Tsa: Not affected
Vulnerability Tsx async abort: Not affected
Vulnerability Vmscape: Not affected
```
</details>
Comparing perf/dictionary-work-bounded-by-rows (bc3d609b91b7452d45eefbf3a64dfe5cc311823d) to 039c0b9 (merge-base) [diff](https://github.com/apache/datafusion/compare/039c0b99d5b05e73ff5def029c0131b76b481c6f..bc3d609b91b7452d45eefbf3a64dfe5cc311823d)
<details><summary>Run configuration</summary>
```yaml
run benchmark clickbench_partitioned
baseline:
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
changed:
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
```
</details>
Results will be posted here when complete
---
[File an issue](https://github.com/adriangb/datafusion-benchmarking/issues) against this benchmark runner
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: bound work over dictionary values by the batch's row count [datafusion]
Posted by "adriangbot (via GitHub)" <gi...@apache.org>.
adriangbot commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6384254939
π€ Benchmark running (GKE) | [trigger](https://github.com/apache/datafusion/pull/26703#issuecomment-6384244706)
**Instance:** `c4a-highmem-16` (12 vCPU / 65 GiB) | `Linux bench-c6384244706-3828-5pqrr 6.12.105+ #1 SMP Sat Sep 5 07:54:11 UTC 2026 aarch64 GNU/Linux`
<details><summary>CPU Details (lscpu)</summary>
```
Architecture: aarch64
CPU op-mode(s): 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Vendor ID: ARM
Model name: Neoverse-V2
Model: 1
Thread(s) per core: 1
Core(s) per cluster: 16
Socket(s): -
Cluster(s): 1
Stepping: r0p1
BogoMIPS: 2000.00
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache: 1 MiB (16 instances)
L1i cache: 1 MiB (16 instances)
L2 cache: 32 MiB (16 instances)
L3 cache: 80 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-15
Vulnerability Gather data sampling: Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1: Mitigation; __user pointer sanitization
Vulnerability Spectre v2: Mitigation; CSV2, BHB
Vulnerability Srbds: Not affected
Vulnerability Tsa: Not affected
Vulnerability Tsx async abort: Not affected
Vulnerability Vmscape: Not affected
```
</details>
Comparing perf/dictionary-work-bounded-by-rows (c459abafcdb512f08eec3bf575322e30cb4ba0d2) to 039c0b9 (merge-base) [diff](https://github.com/apache/datafusion/compare/039c0b99d5b05e73ff5def029c0131b76b481c6f..c459abafcdb512f08eec3bf575322e30cb4ba0d2)
<details><summary>Run configuration</summary>
```yaml
run benchmark clickbench_partitioned
baseline:
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
changed:
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
```
</details>
Results will be posted here when complete
---
[File an issue](https://github.com/adriangb/datafusion-benchmarking/issues) against this benchmark runner
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: bound work over dictionary values by the batch's row count [datafusion]
Posted by "jayzhan211 (via GitHub)" <gi...@apache.org>.
jayzhan211 commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6382267942
run benchmark
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: bound work over dictionary values by the batch's row count [datafusion]
Posted by "adriangbot (via GitHub)" <gi...@apache.org>.
adriangbot commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6382595079
π€ Benchmark completed (GKE) | [trigger](https://github.com/apache/datafusion/pull/26703#issuecomment-6382311015)
**Instance:** `c4a-highmem-16` (12 vCPU / 65 GiB)
Comparing perf/dictionary-work-bounded-by-rows (bc3d609b91b7452d45eefbf3a64dfe5cc311823d) to 039c0b9 (merge-base) [diff](https://github.com/apache/datafusion/compare/039c0b99d5b05e73ff5def029c0131b76b481c6f..bc3d609b91b7452d45eefbf3a64dfe5cc311823d)
<details><summary>Run configuration</summary>
```yaml
run benchmark with_hashes
```
</details>
<details><summary>CPU Details (lscpu)</summary>
```
Architecture: aarch64
CPU op-mode(s): 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Vendor ID: ARM
Model name: Neoverse-V2
Model: 1
Thread(s) per core: 1
Core(s) per cluster: 16
Socket(s): -
Cluster(s): 1
Stepping: r0p1
BogoMIPS: 2000.00
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache: 1 MiB (16 instances)
L1i cache: 1 MiB (16 instances)
L2 cache: 32 MiB (16 instances)
L3 cache: 80 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-15
Vulnerability Gather data sampling: Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1: Mitigation; __user pointer sanitization
Vulnerability Spectre v2: Mitigation; CSV2, BHB
Vulnerability Srbds: Not affected
Vulnerability Tsa: Not affected
Vulnerability Tsx async abort: Not affected
Vulnerability Vmscape: Not affected
```
</details>
<details><summary>Details</summary>
<p>
```
group HEAD perf_dictionary-work-bounded-by-rows
----- ---- ------------------------------------
dense_union: multiple, no nulls 1.00 41.6Β±0.05Β΅s ? ?/sec 1.00 41.7Β±0.04Β΅s ? ?/sec
dense_union: single, no nulls 1.00 14.2Β±0.03Β΅s ? ?/sec 1.01 14.2Β±0.15Β΅s ? ?/sec
dense_union_sliced: 1/10 of 81920 rows 1.00 21.8Β±0.02Β΅s ? ?/sec 1.00 21.8Β±0.02Β΅s ? ?/sec
dense_union_sliced: 1/2 of 16384 rows 1.00 21.7Β±0.02Β΅s ? ?/sec 1.00 21.8Β±0.02Β΅s ? ?/sec
dense_union_sliced: 1/5 of 40960 rows 1.00 21.7Β±0.03Β΅s ? ?/sec 1.01 21.9Β±0.02Β΅s ? ?/sec
dictionary_sliced: 1/10 of 81920 values 1.00 53.0Β±0.04Β΅s ? ?/sec
dictionary_sliced: 1/2 of 16384 values 1.00 32.8Β±0.02Β΅s ? ?/sec
dictionary_sliced: 1/5 of 40960 values 1.00 78.9Β±0.17Β΅s ? ?/sec
dictionary_utf8_int32: multiple, no nulls 1.00 10.8Β±0.01Β΅s ? ?/sec 1.00 10.8Β±0.01Β΅s ? ?/sec
dictionary_utf8_int32: multiple, nulls 1.03 26.4Β±0.11Β΅s ? ?/sec 1.00 25.8Β±0.02Β΅s ? ?/sec
dictionary_utf8_int32: single, no nulls 1.00 3.2Β±0.00Β΅s ? ?/sec 1.01 3.3Β±0.00Β΅s ? ?/sec
dictionary_utf8_int32: single, nulls 1.00 8.2Β±0.02Β΅s ? ?/sec 1.00 8.2Β±0.01Β΅s ? ?/sec
fixed_size_list_array: multiple, no nulls 1.01 106.0Β±3.75Β΅s ? ?/sec 1.00 104.6Β±0.21Β΅s ? ?/sec
fixed_size_list_array: multiple, nulls 1.00 110.7Β±0.06Β΅s ? ?/sec 1.00 110.3Β±0.25Β΅s ? ?/sec
fixed_size_list_array: single, no nulls 1.05 34.9Β±0.28Β΅s ? ?/sec 1.00 33.4Β±0.08Β΅s ? ?/sec
fixed_size_list_array: single, nulls 1.00 37.2Β±0.06Β΅s ? ?/sec 1.00 37.2Β±0.05Β΅s ? ?/sec
int64: multiple, no nulls 1.00 11.7Β±0.01Β΅s ? ?/sec 1.00 11.7Β±0.02Β΅s ? ?/sec
int64: multiple, nulls 1.00 26.7Β±0.01Β΅s ? ?/sec 1.01 26.9Β±0.05Β΅s ? ?/sec
int64: single, no nulls 1.00 3.8Β±0.01Β΅s ? ?/sec 1.00 3.8Β±0.01Β΅s ? ?/sec
int64: single, nulls 1.00 8.8Β±0.01Β΅s ? ?/sec 1.00 8.7Β±0.02Β΅s ? ?/sec
large_utf8: multiple, no nulls 1.06 128.1Β±0.72Β΅s ? ?/sec 1.00 121.4Β±1.16Β΅s ? ?/sec
large_utf8: multiple, nulls 1.00 129.7Β±0.58Β΅s ? ?/sec 1.03 133.8Β±0.54Β΅s ? ?/sec
large_utf8: single, no nulls 1.00 28.7Β±0.70Β΅s ? ?/sec 1.38 39.6Β±0.10Β΅s ? ?/sec
large_utf8: single, nulls 1.00 34.3Β±0.14Β΅s ? ?/sec 1.26 43.0Β±0.59Β΅s ? ?/sec
list_array: multiple, no nulls 1.03 133.7Β±3.43Β΅s ? ?/sec 1.00 130.0Β±0.19Β΅s ? ?/sec
list_array: multiple, nulls 1.00 157.0Β±0.13Β΅s ? ?/sec 1.01 158.5Β±0.18Β΅s ? ?/sec
list_array: single, no nulls 1.00 43.2Β±0.04Β΅s ? ?/sec 1.01 43.7Β±0.52Β΅s ? ?/sec
list_array: single, nulls 1.00 52.6Β±0.04Β΅s ? ?/sec 1.01 53.1Β±0.05Β΅s ? ?/sec
list_array_sliced: 1/10 of 81920 rows 1.00 43.2Β±0.09Β΅s ? ?/sec 1.00 43.3Β±0.04Β΅s ? ?/sec
list_array_sliced: 1/2 of 16384 rows 1.00 43.4Β±0.09Β΅s ? ?/sec 1.01 43.7Β±0.04Β΅s ? ?/sec
list_array_sliced: 1/5 of 40960 rows 1.04 45.5Β±1.31Β΅s ? ?/sec 1.00 43.6Β±0.16Β΅s ? ?/sec
list_view_array: multiple, no nulls 1.01 126.5Β±0.29Β΅s ? ?/sec 1.00 125.1Β±0.14Β΅s ? ?/sec
list_view_array: multiple, nulls 1.00 131.3Β±0.08Β΅s ? ?/sec 1.01 132.0Β±0.30Β΅s ? ?/sec
list_view_array: single, no nulls 1.00 41.1Β±0.04Β΅s ? ?/sec 1.01 41.6Β±0.43Β΅s ? ?/sec
list_view_array: single, nulls 1.00 44.0Β±0.03Β΅s ? ?/sec 1.01 44.4Β±0.04Β΅s ? ?/sec
map_array: multiple, no nulls 1.00 195.3Β±0.48Β΅s ? ?/sec 1.01 196.6Β±0.32Β΅s ? ?/sec
map_array: multiple, nulls 1.00 203.1Β±0.12Β΅s ? ?/sec 1.00 204.1Β±2.23Β΅s ? ?/sec
map_array: single, no nulls 1.00 65.2Β±0.32Β΅s ? ?/sec 1.01 65.7Β±0.04Β΅s ? ?/sec
map_array: single, nulls 1.00 67.9Β±0.06Β΅s ? ?/sec 1.01 68.5Β±0.20Β΅s ? ?/sec
map_array_sliced: 1/10 of 81920 rows 1.00 65.2Β±0.06Β΅s ? ?/sec 1.01 66.0Β±0.98Β΅s ? ?/sec
map_array_sliced: 1/2 of 16384 rows 1.00 65.2Β±0.05Β΅s ? ?/sec 1.01 65.7Β±0.05Β΅s ? ?/sec
map_array_sliced: 1/5 of 40960 rows 1.01 65.9Β±0.07Β΅s ? ?/sec 1.00 65.5Β±0.09Β΅s ? ?/sec
mixed: 3 columns (int64, utf8, utf8_view) 1.08 87.7Β±0.16Β΅s ? ?/sec 1.00 81.5Β±0.36Β΅s ? ?/sec
null: multiple, no nulls 1.00 2.5Β±0.03Β΅s ? ?/sec 1.00 2.5Β±0.01Β΅s ? ?/sec
null: single, no nulls 1.00 1110.9Β±2.85ns ? ?/sec 1.00 1109.1Β±2.76ns ? ?/sec
run_array_int32: multiple, no nulls 1.00 4.9Β±0.01Β΅s ? ?/sec 1.00 4.9Β±0.01Β΅s ? ?/sec
run_array_int32: multiple, nulls 1.00 6.7Β±0.01Β΅s ? ?/sec 1.00 6.7Β±0.01Β΅s ? ?/sec
run_array_int32: single, no nulls 1.00 1805.6Β±4.79ns ? ?/sec 1.00 1805.4Β±3.01ns ? ?/sec
run_array_int32: single, nulls 1.00 2.3Β±0.01Β΅s ? ?/sec 1.00 2.3Β±0.00Β΅s ? ?/sec
sparse_union (2 types): multiple, no nulls 1.00 98.2Β±0.39Β΅s ? ?/sec 1.00 98.0Β±0.58Β΅s ? ?/sec
sparse_union (2 types): single, no nulls 1.03 34.5Β±1.08Β΅s ? ?/sec 1.00 33.6Β±0.43Β΅s ? ?/sec
sparse_union (utf8): multiple, no nulls 1.01 237.3Β±1.10Β΅s ? ?/sec 1.00 234.5Β±0.95Β΅s ? ?/sec
sparse_union (utf8): single, no nulls 1.00 79.6Β±0.32Β΅s ? ?/sec 1.00 79.3Β±0.25Β΅s ? ?/sec
sparse_union: multiple, no nulls 1.02 97.0Β±11.87Β΅s ? ?/sec 1.00 94.7Β±0.42Β΅s ? ?/sec
sparse_union: single, no nulls 1.00 31.6Β±0.25Β΅s ? ?/sec 1.01 32.0Β±0.52Β΅s ? ?/sec
sparse_union_sliced: 1/10 of 81920 rows 1.00 31.9Β±0.70Β΅s ? ?/sec 1.00 31.8Β±0.15Β΅s ? ?/sec
sparse_union_sliced: 1/2 of 16384 rows 1.00 31.5Β±0.14Β΅s ? ?/sec 1.00 31.3Β±0.15Β΅s ? ?/sec
sparse_union_sliced: 1/5 of 40960 rows 1.00 31.7Β±0.31Β΅s ? ?/sec 1.01 31.9Β±0.29Β΅s ? ?/sec
struct_array: multiple, no nulls 1.19 178.9Β±0.52Β΅s ? ?/sec 1.00 150.5Β±0.82Β΅s ? ?/sec
struct_array: multiple, nulls 1.18 196.1Β±0.84Β΅s ? ?/sec 1.00 166.5Β±0.52Β΅s ? ?/sec
struct_array: single, no nulls 1.17 60.3Β±0.16Β΅s ? ?/sec 1.00 51.7Β±7.61Β΅s ? ?/sec
struct_array: single, nulls 1.17 65.6Β±0.21Β΅s ? ?/sec 1.00 56.0Β±0.29Β΅s ? ?/sec
utf8: multiple, no nulls 1.24 142.6Β±0.46Β΅s ? ?/sec 1.00 114.9Β±0.46Β΅s ? ?/sec
utf8: multiple, nulls 1.18 161.1Β±0.98Β΅s ? ?/sec 1.00 136.0Β±0.69Β΅s ? ?/sec
utf8: single, no nulls 1.40 40.6Β±0.20Β΅s ? ?/sec 1.00 29.1Β±0.18Β΅s ? ?/sec
utf8: single, nulls 1.00 44.1Β±0.20Β΅s ? ?/sec 1.02 44.8Β±0.91Β΅s ? ?/sec
utf8_view (small): multiple, no nulls 1.00 19.1Β±0.01Β΅s ? ?/sec 1.00 19.1Β±0.03Β΅s ? ?/sec
utf8_view (small): multiple, nulls 1.02 29.8Β±0.07Β΅s ? ?/sec 1.00 29.3Β±0.02Β΅s ? ?/sec
utf8_view (small): single, no nulls 1.00 5.0Β±0.00Β΅s ? ?/sec 1.00 5.1Β±0.00Β΅s ? ?/sec
utf8_view (small): single, nulls 1.00 9.7Β±0.02Β΅s ? ?/sec 1.00 9.7Β±0.01Β΅s ? ?/sec
utf8_view: multiple, no nulls 1.00 102.3Β±0.28Β΅s ? ?/sec 1.00 101.9Β±0.35Β΅s ? ?/sec
utf8_view: multiple, nulls 1.00 124.2Β±0.42Β΅s ? ?/sec 1.00 124.0Β±0.29Β΅s ? ?/sec
utf8_view: single, no nulls 1.00 35.2Β±0.09Β΅s ? ?/sec 1.00 35.3Β±0.10Β΅s ? ?/sec
utf8_view: single, nulls 1.02 36.8Β±0.11Β΅s ? ?/sec 1.00 36.3Β±0.29Β΅s ? ?/sec
```
</p>
</details>
<details><summary>Resource Usage</summary>
**with_hashes β base (merge-base)**
| Metric | Value |
|--------|-------|
| Wall time | 770.2s |
| Peak memory | 40.8 MiB |
| Avg memory | 34.2 MiB |
| CPU user | 880.9s |
| CPU sys | 0.8s |
| Peak spill | 0 B |
**with_hashes β branch**
| Metric | Value |
|--------|-------|
| Wall time | 790.2s |
| Peak memory | 42.7 MiB |
| Avg memory | 35.1 MiB |
| CPU user | 918.5s |
| CPU sys | 0.9s |
| Peak spill | 0 B |
</details>
---
[File an issue](https://github.com/adriangb/datafusion-benchmarking/issues) against this benchmark runner
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: bound work over dictionary values by the batch's row count [datafusion]
Posted by "adriangbot (via GitHub) via github" <gi...@datafusion.apache.org>.
adriangbot commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6703599262
π€ Benchmark completed (GKE) | [trigger](https://github.com/apache/datafusion/pull/26703#issuecomment-6703380077)
**Instance:** `c4a-highmem-16` (12 vCPU / 65 GiB)
Comparing perf/dictionary-work-bounded-by-rows (cd7235fe7b7b4ad63d958c2f17bf71f7108bcb44) to 4bf32cb (merge-base) [diff](https://github.com/apache/datafusion/compare/4bf32cb46df983f8efd20d259e9e45827dce8f43..cd7235fe7b7b4ad63d958c2f17bf71f7108bcb44)
<details><summary>Run configuration</summary>
```yaml
run benchmark clickbench_partitioned
baseline:
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
changed:
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
```
</details>
<details><summary>CPU Details (lscpu)</summary>
```
Architecture: aarch64
CPU op-mode(s): 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Vendor ID: ARM
Model name: Neoverse-V2
Model: 1
Thread(s) per core: 1
Core(s) per cluster: 16
Socket(s): -
Cluster(s): 1
Stepping: r0p1
BogoMIPS: 2000.00
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache: 1 MiB (16 instances)
L1i cache: 1 MiB (16 instances)
L2 cache: 32 MiB (16 instances)
L3 cache: 80 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-15
Vulnerability Gather data sampling: Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1: Mitigation; __user pointer sanitization
Vulnerability Spectre v2: Mitigation; CSV2, BHB
Vulnerability Srbds: Not affected
Vulnerability Tsa: Not affected
Vulnerability Tsx async abort: Not affected
Vulnerability Vmscape: Not affected
```
</details>
<details><summary>Details</summary>
<p>
```
Comparing HEAD and perf_dictionary-work-bounded-by-rows
--------------------
Benchmark clickbench_partitioned.json
--------------------
βββββββββββββ³ββββββββββββββ³βββββββββββββββββββββββββββββββββββββββ³ββββββββββββββββ
β Query β HEAD β perf_dictionary-work-bounded-by-rows β Change β
β‘βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β QQuery 0 β 1.23 ms β 1.16 ms β +1.07x faster β
β QQuery 1 β 11.78 ms β 11.41 ms β no change β
β QQuery 2 β 35.29 ms β 35.03 ms β no change β
β QQuery 3 β 31.91 ms β 31.17 ms β no change β
β QQuery 4 β 275.40 ms β 258.39 ms β +1.07x faster β
β QQuery 5 β 1705.11 ms β 876.52 ms β +1.95x faster β
β QQuery 6 β 1.21 ms β 1.20 ms β no change β
β QQuery 7 β 13.53 ms β 12.99 ms β no change β
β QQuery 8 β 373.83 ms β 363.93 ms β no change β
β QQuery 9 β 541.92 ms β 521.05 ms β no change β
β QQuery 10 β 204.97 ms β 205.94 ms β no change β
β QQuery 11 β 215.45 ms β 218.51 ms β no change β
β QQuery 12 β 1660.20 ms β 899.76 ms β +1.85x faster β
β QQuery 13 β 2351.67 ms β 1216.94 ms β +1.93x faster β
β QQuery 14 β 1813.81 ms β 930.99 ms β +1.95x faster β
β QQuery 15 β 331.71 ms β 313.50 ms β +1.06x faster β
β QQuery 16 β 4094.89 ms β 1381.32 ms β +2.96x faster β
β QQuery 17 β 4151.53 ms β 1380.76 ms β +3.01x faster β
β QQuery 18 β 7640.70 ms β 2282.92 ms β +3.35x faster β
β QQuery 19 β 28.58 ms β 28.71 ms β no change β
β QQuery 20 β 1100.83 ms β 1098.24 ms β no change β
β QQuery 21 β 1431.47 ms β 1431.87 ms β no change β
β QQuery 22 β 3336.06 ms β 3327.88 ms β no change β
β QQuery 23 β 9629.08 ms β 9489.32 ms β no change β
β QQuery 24 β 98.98 ms β 98.29 ms β no change β
β QQuery 25 β 358.64 ms β 361.62 ms β no change β
β QQuery 26 β 97.93 ms β 101.36 ms β no change β
β QQuery 27 β 1200.01 ms β 1215.83 ms β no change β
β QQuery 28 β 2971.68 ms β 2711.11 ms β +1.10x faster β
β QQuery 29 β 38.65 ms β 39.19 ms β no change β
β QQuery 30 β 569.63 ms β 575.24 ms β no change β
β QQuery 31 β 579.90 ms β 571.64 ms β no change β
β QQuery 32 β 1105.18 ms β 1202.66 ms β 1.09x slower β
β QQuery 33 β 14896.85 ms β 4407.29 ms β +3.38x faster β
β QQuery 34 β 14755.30 ms β 4131.38 ms β +3.57x faster β
β QQuery 35 β 327.14 ms β 359.13 ms β 1.10x slower β
β QQuery 36 β 182.58 ms β 164.18 ms β +1.11x faster β
β QQuery 37 β 98.97 ms β 103.69 ms β no change β
β QQuery 38 β 85.97 ms β 85.91 ms β no change β
β QQuery 39 β 412.48 ms β 333.17 ms β +1.24x faster β
β QQuery 40 β 14.75 ms β 15.50 ms β 1.05x slower β
β QQuery 41 β 14.31 ms β 14.64 ms β no change β
β QQuery 42 β 13.92 ms β 14.43 ms β no change β
βββββββββββββ΄ββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ³βββββββββββββ
β Benchmark Summary β β
β‘βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β Total Time (HEAD) β 78805.04ms β
β Total Time (perf_dictionary-work-bounded-by-rows) β 42825.76ms β
β Average Time (HEAD) β 1832.68ms β
β Average Time (perf_dictionary-work-bounded-by-rows) β 995.95ms β
β Queries Faster β 15 β
β Queries Slower β 3 β
β Queries with No Change β 25 β
β Queries with Failure β 0 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββ
Distribution per query (min / mean Β±stddev / max):
Comparing HEAD and perf_dictionary-work-bounded-by-rows
--------------------
Benchmark clickbench_partitioned.json
--------------------
βββββββββββββ³βββββββββββββββββββββββββββββββββββββββββββββ³ββββββββββββββββββββββββββββββββββββββββββ³ββββββββββββββββ
β Query β HEAD β perf_dictionary-work-bounded-by-rows β Change β
β‘βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β QQuery 0 β 1.23 / 1.96 Β±1.23 / 4.42 ms β 1.16 / 1.82 Β±1.16 / 4.13 ms β +1.08x faster β
β QQuery 1 β 11.78 / 12.33 Β±0.49 / 13.17 ms β 11.41 / 11.65 Β±0.15 / 11.84 ms β +1.06x faster β
β QQuery 2 β 35.29 / 35.95 Β±0.53 / 36.92 ms β 35.03 / 35.30 Β±0.22 / 35.68 ms β no change β
β QQuery 3 β 31.91 / 32.96 Β±1.20 / 35.23 ms β 31.17 / 31.82 Β±0.45 / 32.47 ms β no change β
β QQuery 4 β 275.40 / 280.78 Β±4.21 / 286.78 ms β 258.39 / 261.42 Β±2.88 / 266.74 ms β +1.07x faster β
β QQuery 5 β 1705.11 / 1730.30 Β±19.45 / 1761.68 ms β 876.52 / 891.30 Β±12.04 / 909.69 ms β +1.94x faster β
β QQuery 6 β 1.21 / 1.38 Β±0.23 / 1.83 ms β 1.20 / 1.35 Β±0.24 / 1.82 ms β no change β
β QQuery 7 β 13.53 / 13.63 Β±0.10 / 13.82 ms β 12.99 / 13.51 Β±0.52 / 14.50 ms β no change β
β QQuery 8 β 373.83 / 381.85 Β±4.62 / 386.37 ms β 363.93 / 370.95 Β±4.98 / 379.50 ms β no change β
β QQuery 9 β 541.92 / 548.00 Β±4.77 / 553.09 ms β 521.05 / 545.65 Β±21.24 / 583.00 ms β no change β
β QQuery 10 β 204.97 / 206.36 Β±1.14 / 208.03 ms β 205.94 / 212.85 Β±12.42 / 237.68 ms β no change β
β QQuery 11 β 215.45 / 217.51 Β±1.59 / 220.09 ms β 218.51 / 219.42 Β±0.70 / 220.33 ms β no change β
β QQuery 12 β 1660.20 / 1718.67 Β±40.31 / 1767.35 ms β 899.76 / 917.89 Β±11.80 / 929.25 ms β +1.87x faster β
β QQuery 13 β 2351.67 / 2739.95 Β±398.75 / 3365.65 ms β 1216.94 / 1258.50 Β±37.08 / 1309.68 ms β +2.18x faster β
β QQuery 14 β 1813.81 / 1882.96 Β±38.48 / 1923.71 ms β 930.99 / 943.51 Β±10.25 / 958.68 ms β +2.00x faster β
β QQuery 15 β 331.71 / 340.09 Β±8.05 / 354.04 ms β 313.50 / 335.10 Β±14.61 / 349.09 ms β no change β
β QQuery 16 β 4094.89 / 4162.63 Β±64.26 / 4275.51 ms β 1381.32 / 1433.70 Β±30.13 / 1460.59 ms β +2.90x faster β
β QQuery 17 β 4151.53 / 4251.08 Β±70.27 / 4337.02 ms β 1380.76 / 1421.80 Β±21.37 / 1438.82 ms β +2.99x faster β
β QQuery 18 β 7640.70 / 7856.91 Β±112.82 / 7954.62 ms β 2282.92 / 2289.21 Β±10.04 / 2308.96 ms β +3.43x faster β
β QQuery 19 β 28.58 / 64.84 Β±35.34 / 108.20 ms β 28.71 / 29.20 Β±0.42 / 29.80 ms β +2.22x faster β
β QQuery 20 β 1100.83 / 1105.01 Β±4.60 / 1112.81 ms β 1098.24 / 1111.89 Β±9.84 / 1120.46 ms β no change β
β QQuery 21 β 1431.47 / 1445.40 Β±13.16 / 1461.63 ms β 1431.87 / 1440.61 Β±9.94 / 1459.23 ms β no change β
β QQuery 22 β 3336.06 / 3410.73 Β±51.78 / 3498.13 ms β 3327.88 / 3381.44 Β±40.59 / 3451.53 ms β no change β
β QQuery 23 β 9629.08 / 9748.17 Β±125.17 / 9938.64 ms β 9489.32 / 9708.59 Β±210.88 / 10087.60 ms β no change β
β QQuery 24 β 98.98 / 108.99 Β±14.27 / 136.78 ms β 98.29 / 138.08 Β±77.96 / 293.99 ms β 1.27x slower β
β QQuery 25 β 358.64 / 363.54 Β±5.70 / 374.23 ms β 361.62 / 362.83 Β±1.43 / 365.60 ms β no change β
β QQuery 26 β 97.93 / 99.74 Β±1.43 / 102.11 ms β 101.36 / 103.49 Β±2.57 / 108.42 ms β no change β
β QQuery 27 β 1200.01 / 1207.86 Β±6.97 / 1218.84 ms β 1215.83 / 1230.88 Β±9.32 / 1245.19 ms β no change β
β QQuery 28 β 2971.68 / 3018.59 Β±37.39 / 3079.99 ms β 2711.11 / 2737.19 Β±22.75 / 2765.66 ms β +1.10x faster β
β QQuery 29 β 38.65 / 39.27 Β±0.65 / 40.47 ms β 39.19 / 49.00 Β±19.29 / 87.58 ms β 1.25x slower β
β QQuery 30 β 569.63 / 587.95 Β±11.82 / 602.53 ms β 575.24 / 588.93 Β±11.77 / 609.96 ms β no change β
β QQuery 31 β 579.90 / 586.38 Β±3.78 / 591.19 ms β 571.64 / 581.14 Β±9.31 / 592.75 ms β no change β
β QQuery 32 β 1105.18 / 1182.26 Β±83.20 / 1343.71 ms β 1202.66 / 1242.79 Β±28.84 / 1274.25 ms β 1.05x slower β
β QQuery 33 β 14896.85 / 16368.51 Β±1097.74 / 17851.98 ms β 4407.29 / 4494.16 Β±100.09 / 4689.27 ms β +3.64x faster β
β QQuery 34 β 14755.30 / 15705.78 Β±667.09 / 16724.26 ms β 4131.38 / 4216.54 Β±85.25 / 4374.74 ms β +3.72x faster β
β QQuery 35 β 327.14 / 398.39 Β±107.27 / 611.86 ms β 359.13 / 375.07 Β±10.56 / 388.74 ms β +1.06x faster β
β QQuery 36 β 182.58 / 201.32 Β±14.70 / 226.98 ms β 164.18 / 170.57 Β±5.01 / 176.58 ms β +1.18x faster β
β QQuery 37 β 98.97 / 103.85 Β±5.34 / 114.05 ms β 103.69 / 107.44 Β±4.11 / 114.93 ms β no change β
β QQuery 38 β 85.97 / 87.39 Β±1.20 / 89.49 ms β 85.91 / 92.84 Β±6.65 / 101.74 ms β 1.06x slower β
β QQuery 39 β 412.48 / 433.44 Β±13.18 / 446.13 ms β 333.17 / 348.00 Β±12.51 / 366.39 ms β +1.25x faster β
β QQuery 40 β 14.75 / 17.80 Β±5.17 / 28.13 ms β 15.50 / 16.17 Β±0.39 / 16.59 ms β +1.10x faster β
β QQuery 41 β 14.31 / 16.19 Β±2.80 / 21.75 ms β 14.64 / 20.84 Β±6.85 / 33.36 ms β 1.29x slower β
β QQuery 42 β 13.92 / 14.06 Β±0.11 / 14.19 ms β 14.43 / 14.79 Β±0.31 / 15.32 ms β 1.05x slower β
βββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ³βββββββββββββ
β Benchmark Summary β β
β‘βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β Total Time (HEAD) β 82730.80ms β
β Total Time (perf_dictionary-work-bounded-by-rows) β 43759.25ms β
β Average Time (HEAD) β 1923.97ms β
β Average Time (perf_dictionary-work-bounded-by-rows) β 1017.66ms β
β Queries Faster β 18 β
β Queries Slower β 6 β
β Queries with No Change β 19 β
β Queries with Failure β 0 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββ
```
</p>
</details>
<details><summary>Resource Usage</summary>
**clickbench_partitioned β base (merge-base)**
| Metric | Value |
|--------|-------|
| Wall time | 415.1s |
| Peak memory | 13.1 GiB |
| Avg memory | 6.1 GiB |
| CPU user | 3567.0s |
| CPU sys | 223.2s |
| Peak spill | 0 B |
**clickbench_partitioned β branch**
| Metric | Value |
|--------|-------|
| Wall time | 220.1s |
| Peak memory | 12.7 GiB |
| Avg memory | 5.7 GiB |
| CPU user | 2104.3s |
| CPU sys | 149.5s |
| Peak spill | 0 B |
</details>
---
[File an issue](https://github.com/adriangb/datafusion-benchmarking/issues) against this benchmark runner
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: bound work over dictionary values by the batch's row count [datafusion]
Posted by "adriangbot (via GitHub)" <gi...@apache.org>.
adriangbot commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6382540826
π€ Benchmark completed (GKE) | [trigger](https://github.com/apache/datafusion/pull/26703#issuecomment-6382310703)
**Instance:** `c4a-highmem-16` (12 vCPU / 65 GiB)
Comparing perf/dictionary-work-bounded-by-rows (bc3d609b91b7452d45eefbf3a64dfe5cc311823d) to 039c0b9 (merge-base) [diff](https://github.com/apache/datafusion/compare/039c0b99d5b05e73ff5def029c0131b76b481c6f..bc3d609b91b7452d45eefbf3a64dfe5cc311823d)
<details><summary>Run configuration</summary>
```yaml
run benchmark clickbench_partitioned
baseline:
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
changed:
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
```
</details>
<details><summary>CPU Details (lscpu)</summary>
```
Architecture: aarch64
CPU op-mode(s): 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Vendor ID: ARM
Model name: Neoverse-V2
Model: 1
Thread(s) per core: 1
Core(s) per cluster: 16
Socket(s): -
Cluster(s): 1
Stepping: r0p1
BogoMIPS: 2000.00
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache: 1 MiB (16 instances)
L1i cache: 1 MiB (16 instances)
L2 cache: 32 MiB (16 instances)
L3 cache: 80 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-15
Vulnerability Gather data sampling: Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1: Mitigation; __user pointer sanitization
Vulnerability Spectre v2: Mitigation; CSV2, BHB
Vulnerability Srbds: Not affected
Vulnerability Tsa: Not affected
Vulnerability Tsx async abort: Not affected
Vulnerability Vmscape: Not affected
```
</details>
<details><summary>Details</summary>
<p>
```
Comparing HEAD and perf_dictionary-work-bounded-by-rows
--------------------
Benchmark clickbench_partitioned.json
--------------------
βββββββββββββ³ββββββββββββββ³βββββββββββββββββββββββββββββββββββββββ³ββββββββββββββββ
β Query β HEAD β perf_dictionary-work-bounded-by-rows β Change β
β‘βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β QQuery 0 β 1.15 ms β 1.14 ms β no change β
β QQuery 1 β 11.49 ms β 11.34 ms β no change β
β QQuery 2 β 35.56 ms β 35.55 ms β no change β
β QQuery 3 β 30.78 ms β 30.91 ms β no change β
β QQuery 4 β 234.56 ms β 236.66 ms β no change β
β QQuery 5 β 1482.61 ms β 1049.17 ms β +1.41x faster β
β QQuery 6 β 1.18 ms β 1.18 ms β no change β
β QQuery 7 β 12.53 ms β 12.19 ms β no change β
β QQuery 8 β 333.81 ms β 334.15 ms β no change β
β QQuery 9 β 467.37 ms β 472.98 ms β no change β
β QQuery 10 β 197.43 ms β 197.33 ms β no change β
β QQuery 11 β 207.59 ms β 208.24 ms β no change β
β QQuery 12 β 1446.45 ms β 1103.76 ms β +1.31x faster β
β QQuery 13 β 2067.76 ms β 1458.48 ms β +1.42x faster β
β QQuery 14 β 1599.21 ms β 1153.63 ms β +1.39x faster β
β QQuery 15 β 289.33 ms β 289.20 ms β no change β
β QQuery 16 β 3551.15 ms β 2158.61 ms β +1.65x faster β
β QQuery 17 β 3624.78 ms β 2252.81 ms β +1.61x faster β
β QQuery 18 β 6741.55 ms β 3475.06 ms β +1.94x faster β
β QQuery 19 β 27.35 ms β 27.23 ms β no change β
β QQuery 20 β 1052.25 ms β 1040.96 ms β no change β
β QQuery 21 β 1359.53 ms β 1357.17 ms β no change β
β QQuery 22 β 3205.28 ms β 3224.01 ms β no change β
β QQuery 23 β 9096.93 ms β 9210.26 ms β no change β
β QQuery 24 β 94.31 ms β 95.08 ms β no change β
β QQuery 25 β 352.08 ms β 351.54 ms β no change β
β QQuery 26 β 96.29 ms β 96.38 ms β no change β
β QQuery 27 β 1133.21 ms β 1139.24 ms β no change β
β QQuery 28 β 3532.15 ms β 3539.22 ms β no change β
β QQuery 29 β 38.35 ms β 38.69 ms β no change β
β QQuery 30 β 541.36 ms β 543.52 ms β no change β
β QQuery 31 β 537.23 ms β 530.30 ms β no change β
β QQuery 32 β 1010.52 ms β 1012.60 ms β no change β
β QQuery 33 β 13929.17 ms β 7370.91 ms β +1.89x faster β
β QQuery 34 β 13384.03 ms β 7356.96 ms β +1.82x faster β
β QQuery 35 β 291.63 ms β 299.83 ms β no change β
β QQuery 36 β 171.08 ms β 132.96 ms β +1.29x faster β
β QQuery 37 β 95.52 ms β 97.18 ms β no change β
β QQuery 38 β 79.59 ms β 83.74 ms β 1.05x slower β
β QQuery 39 β 392.24 ms β 287.21 ms β +1.37x faster β
β QQuery 40 β 13.90 ms β 14.98 ms β 1.08x slower β
β QQuery 41 β 13.04 ms β 13.63 ms β no change β
β QQuery 42 β 12.63 ms β 12.96 ms β no change β
βββββββββββββ΄ββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ³βββββββββββββ
β Benchmark Summary β β
β‘βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β Total Time (HEAD) β 72795.97ms β
β Total Time (perf_dictionary-work-bounded-by-rows) β 52358.97ms β
β Average Time (HEAD) β 1692.93ms β
β Average Time (perf_dictionary-work-bounded-by-rows) β 1217.65ms β
β Queries Faster β 11 β
β Queries Slower β 2 β
β Queries with No Change β 30 β
β Queries with Failure β 0 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββ
Distribution per query (min / mean Β±stddev / max):
Comparing HEAD and perf_dictionary-work-bounded-by-rows
--------------------
Benchmark clickbench_partitioned.json
--------------------
βββββββββββββ³βββββββββββββββββββββββββββββββββββββββββββββ³βββββββββββββββββββββββββββββββββββββββββ³ββββββββββββββββ
β Query β HEAD β perf_dictionary-work-bounded-by-rows β Change β
β‘ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β QQuery 0 β 1.15 / 4.19 Β±5.97 / 16.12 ms β 1.14 / 4.28 Β±6.14 / 16.56 ms β no change β
β QQuery 1 β 11.49 / 11.63 Β±0.08 / 11.73 ms β 11.34 / 11.40 Β±0.04 / 11.46 ms β no change β
β QQuery 2 β 35.56 / 36.10 Β±0.30 / 36.45 ms β 35.55 / 35.90 Β±0.28 / 36.24 ms β no change β
β QQuery 3 β 30.78 / 31.56 Β±0.55 / 32.48 ms β 30.91 / 31.47 Β±0.48 / 32.14 ms β no change β
β QQuery 4 β 234.56 / 239.63 Β±3.25 / 242.86 ms β 236.66 / 241.07 Β±2.79 / 245.21 ms β no change β
β QQuery 5 β 1482.61 / 1500.59 Β±17.20 / 1529.29 ms β 1049.17 / 1069.70 Β±18.45 / 1093.43 ms β +1.40x faster β
β QQuery 6 β 1.18 / 1.34 Β±0.25 / 1.84 ms β 1.18 / 1.34 Β±0.24 / 1.82 ms β no change β
β QQuery 7 β 12.53 / 13.70 Β±2.12 / 17.93 ms β 12.19 / 12.51 Β±0.21 / 12.83 ms β +1.09x faster β
β QQuery 8 β 333.81 / 341.15 Β±5.77 / 350.35 ms β 334.15 / 348.48 Β±12.64 / 368.59 ms β no change β
β QQuery 9 β 467.37 / 480.84 Β±11.13 / 498.08 ms β 472.98 / 492.81 Β±15.82 / 513.41 ms β no change β
β QQuery 10 β 197.43 / 198.62 Β±0.97 / 199.92 ms β 197.33 / 198.47 Β±1.20 / 200.73 ms β no change β
β QQuery 11 β 207.59 / 208.48 Β±0.50 / 209.01 ms β 208.24 / 209.58 Β±1.13 / 211.44 ms β no change β
β QQuery 12 β 1446.45 / 1502.18 Β±34.10 / 1547.81 ms β 1103.76 / 1123.47 Β±10.75 / 1134.56 ms β +1.34x faster β
β QQuery 13 β 2067.76 / 2507.61 Β±330.39 / 2927.23 ms β 1458.48 / 1554.76 Β±70.77 / 1654.94 ms β +1.61x faster β
β QQuery 14 β 1599.21 / 1662.80 Β±53.57 / 1752.74 ms β 1153.63 / 1203.12 Β±30.99 / 1243.44 ms β +1.38x faster β
β QQuery 15 β 289.33 / 298.59 Β±9.04 / 314.17 ms β 289.20 / 301.13 Β±12.14 / 320.67 ms β no change β
β QQuery 16 β 3551.15 / 3675.05 Β±145.47 / 3958.93 ms β 2158.61 / 2203.55 Β±29.90 / 2251.23 ms β +1.67x faster β
β QQuery 17 β 3624.78 / 3728.02 Β±86.08 / 3886.03 ms β 2252.81 / 2293.76 Β±28.71 / 2334.23 ms β +1.63x faster β
β QQuery 18 β 6741.55 / 6845.24 Β±117.31 / 7003.43 ms β 3475.06 / 3736.43 Β±175.48 / 3988.60 ms β +1.83x faster β
β QQuery 19 β 27.35 / 30.86 Β±6.69 / 44.24 ms β 27.23 / 41.32 Β±24.89 / 90.97 ms β 1.34x slower β
β QQuery 20 β 1052.25 / 1056.90 Β±3.38 / 1061.33 ms β 1040.96 / 1051.84 Β±7.11 / 1062.69 ms β no change β
β QQuery 21 β 1359.53 / 1368.79 Β±7.17 / 1380.11 ms β 1357.17 / 1365.56 Β±4.32 / 1369.60 ms β no change β
β QQuery 22 β 3205.28 / 3271.69 Β±48.23 / 3346.15 ms β 3224.01 / 3245.74 Β±15.59 / 3260.81 ms β no change β
β QQuery 23 β 9096.93 / 9418.41 Β±223.59 / 9652.59 ms β 9210.26 / 9405.84 Β±156.47 / 9652.43 ms β no change β
β QQuery 24 β 94.31 / 106.53 Β±22.51 / 151.53 ms β 95.08 / 101.65 Β±7.45 / 114.39 ms β no change β
β QQuery 25 β 352.08 / 355.22 Β±4.46 / 363.93 ms β 351.54 / 354.21 Β±2.10 / 357.83 ms β no change β
β QQuery 26 β 96.29 / 98.60 Β±1.54 / 101.15 ms β 96.38 / 98.00 Β±1.57 / 100.68 ms β no change β
β QQuery 27 β 1133.21 / 1148.36 Β±13.67 / 1169.86 ms β 1139.24 / 1151.80 Β±10.44 / 1163.88 ms β no change β
β QQuery 28 β 3532.15 / 3562.37 Β±29.63 / 3598.71 ms β 3539.22 / 3571.51 Β±29.82 / 3618.38 ms β no change β
β QQuery 29 β 38.35 / 38.63 Β±0.23 / 38.94 ms β 38.69 / 49.05 Β±19.73 / 88.50 ms β 1.27x slower β
β QQuery 30 β 541.36 / 552.33 Β±8.61 / 563.61 ms β 543.52 / 549.55 Β±4.53 / 557.24 ms β no change β
β QQuery 31 β 537.23 / 550.76 Β±14.41 / 577.33 ms β 530.30 / 539.78 Β±8.53 / 554.16 ms β no change β
β QQuery 32 β 1010.52 / 1057.88 Β±32.63 / 1092.42 ms β 1012.60 / 1104.91 Β±85.83 / 1237.69 ms β no change β
β QQuery 33 β 13929.17 / 14376.62 Β±517.86 / 15328.74 ms β 7370.91 / 7512.55 Β±142.65 / 7759.59 ms β +1.91x faster β
β QQuery 34 β 13384.03 / 14220.53 Β±1084.57 / 16333.16 ms β 7356.96 / 7607.59 Β±176.50 / 7798.57 ms β +1.87x faster β
β QQuery 35 β 291.63 / 358.90 Β±117.76 / 594.13 ms β 299.83 / 325.80 Β±34.02 / 389.95 ms β +1.10x faster β
β QQuery 36 β 171.08 / 194.82 Β±31.32 / 256.59 ms β 132.96 / 145.01 Β±7.54 / 154.59 ms β +1.34x faster β
β QQuery 37 β 95.52 / 101.57 Β±6.54 / 114.02 ms β 97.18 / 99.77 Β±3.29 / 106.10 ms β no change β
β QQuery 38 β 79.59 / 81.79 Β±1.17 / 83.01 ms β 83.74 / 88.85 Β±4.97 / 98.27 ms β 1.09x slower β
β QQuery 39 β 392.24 / 401.75 Β±5.40 / 407.54 ms β 287.21 / 288.94 Β±2.69 / 294.31 ms β +1.39x faster β
β QQuery 40 β 13.90 / 14.46 Β±0.35 / 14.93 ms β 14.98 / 17.10 Β±2.63 / 22.14 ms β 1.18x slower β
β QQuery 41 β 13.04 / 13.27 Β±0.15 / 13.46 ms β 13.63 / 17.44 Β±4.77 / 25.81 ms β 1.31x slower β
β QQuery 42 β 12.63 / 15.32 Β±5.02 / 25.36 ms β 12.96 / 13.15 Β±0.14 / 13.37 ms β +1.16x faster β
βββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ³βββββββββββββ
β Benchmark Summary β β
β‘βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β Total Time (HEAD) β 75683.71ms β
β Total Time (perf_dictionary-work-bounded-by-rows) β 53820.17ms β
β Average Time (HEAD) β 1760.09ms β
β Average Time (perf_dictionary-work-bounded-by-rows) β 1251.63ms β
β Queries Faster β 14 β
β Queries Slower β 5 β
β Queries with No Change β 24 β
β Queries with Failure β 0 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββ
```
</p>
</details>
<details><summary>Resource Usage</summary>
**clickbench_partitioned β base (merge-base)**
| Metric | Value |
|--------|-------|
| Wall time | 380.1s |
| Peak memory | 13.3 GiB |
| Avg memory | 6.2 GiB |
| CPU user | 3330.8s |
| CPU sys | 199.1s |
| Peak spill | 0 B |
**clickbench_partitioned β branch**
| Metric | Value |
|--------|-------|
| Wall time | 270.1s |
| Peak memory | 15.4 GiB |
| Avg memory | 6.3 GiB |
| CPU user | 2147.6s |
| CPU sys | 179.6s |
| Peak spill | 0 B |
</details>
---
[File an issue](https://github.com/adriangb/datafusion-benchmarking/issues) against this benchmark runner
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: bound work over dictionary values by the batch's row count [datafusion]
Posted by "adriangbot (via GitHub)" <gi...@apache.org>.
adriangbot commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6384274285
π€ Benchmark running (GKE) | [trigger](https://github.com/apache/datafusion/pull/26703#issuecomment-6384245088)
**Instance:** `c4a-highmem-16` (12 vCPU / 65 GiB) | `Linux bench-c6384245088-3829-9tbzc 6.12.105+ #1 SMP Sat Sep 5 07:54:11 UTC 2026 aarch64 GNU/Linux`
<details><summary>CPU Details (lscpu)</summary>
```
Architecture: aarch64
CPU op-mode(s): 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Vendor ID: ARM
Model name: Neoverse-V2
Model: 1
Thread(s) per core: 1
Core(s) per cluster: 16
Socket(s): -
Cluster(s): 1
Stepping: r0p1
BogoMIPS: 2000.00
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache: 1 MiB (16 instances)
L1i cache: 1 MiB (16 instances)
L2 cache: 32 MiB (16 instances)
L3 cache: 80 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-15
Vulnerability Gather data sampling: Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1: Mitigation; __user pointer sanitization
Vulnerability Spectre v2: Mitigation; CSV2, BHB
Vulnerability Srbds: Not affected
Vulnerability Tsa: Not affected
Vulnerability Tsx async abort: Not affected
Vulnerability Vmscape: Not affected
```
</details>
Comparing perf/dictionary-work-bounded-by-rows (c459abafcdb512f08eec3bf575322e30cb4ba0d2) to 039c0b9 (merge-base) [diff](https://github.com/apache/datafusion/compare/039c0b99d5b05e73ff5def029c0131b76b481c6f..c459abafcdb512f08eec3bf575322e30cb4ba0d2)
<details><summary>Run configuration</summary>
```yaml
run benchmark with_hashes
```
</details>
Results will be posted here when complete
---
[File an issue](https://github.com/adriangb/datafusion-benchmarking/issues) against this benchmark runner
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: bound work over dictionary values by the batch's row count [datafusion]
Posted by "jayzhan211 (via GitHub)" <gi...@apache.org>.
jayzhan211 commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6384244706
run benchmark clickbench_partitioned
baseline:
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
changed:
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: bound work over dictionary values by the batch's row count [datafusion]
Posted by "adriangbot (via GitHub) via github" <gi...@datafusion.apache.org>.
adriangbot commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6703654483
π€ Benchmark running (GKE) | [trigger](https://github.com/apache/datafusion/pull/26703#issuecomment-6703629174)
**Instance:** `c4a-highmem-16` (12 vCPU / 65 GiB) | `Linux bench-c6703629174-4585-jd62s 6.12.105+ #1 SMP Sat Sep 19 07:55:25 UTC 2026 aarch64 GNU/Linux`
<details><summary>CPU Details (lscpu)</summary>
```
Architecture: aarch64
CPU op-mode(s): 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Vendor ID: ARM
Model name: Neoverse-V2
Model: 1
Thread(s) per core: 1
Core(s) per cluster: 16
Socket(s): -
Cluster(s): 1
Stepping: r0p1
BogoMIPS: 2000.00
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache: 1 MiB (16 instances)
L1i cache: 1 MiB (16 instances)
L2 cache: 32 MiB (16 instances)
L3 cache: 80 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-15
Vulnerability Gather data sampling: Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1: Mitigation; __user pointer sanitization
Vulnerability Spectre v2: Mitigation; CSV2, BHB
Vulnerability Srbds: Not affected
Vulnerability Tsa: Not affected
Vulnerability Tsx async abort: Not affected
Vulnerability Vmscape: Not affected
```
</details>
Comparing perf/dictionary-work-bounded-by-rows (cd7235fe7b7b4ad63d958c2f17bf71f7108bcb44) to 4bf32cb (merge-base) [diff](https://github.com/apache/datafusion/compare/4bf32cb46df983f8efd20d259e9e45827dce8f43..cd7235fe7b7b4ad63d958c2f17bf71f7108bcb44)
<details><summary>Run configuration</summary>
```yaml
run benchmark clickbench_partitioned
env:
DATAFUSION_EXECUTION_TARGET_PARTITIONS: "32"
baseline:
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
changed:
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
```
</details>
Results will be posted here when complete
---
[File an issue](https://github.com/adriangb/datafusion-benchmarking/issues) against this benchmark runner
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: bound work over dictionary values by the batch's row count [datafusion]
Posted by "jayzhan211 (via GitHub) via github" <gi...@datafusion.apache.org>.
jayzhan211 commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6703629370
run benchmark clickbench_partitioned
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] perf: stop dictionary work growing with the group count [datafusion]
Posted by "adriangbot (via GitHub) via github" <gi...@datafusion.apache.org>.
adriangbot commented on PR #26703:
URL: https://github.com/apache/datafusion/pull/26703#issuecomment-6703960344
π€ Benchmark running (GKE) | [trigger](https://github.com/apache/datafusion/pull/26703#issuecomment-6703932330)
**Instance:** `c4a-highmem-16` (12 vCPU / 65 GiB) | `Linux bench-c6703932330-4589-nkhmd 6.12.105+ #1 SMP Sat Sep 19 07:55:25 UTC 2026 aarch64 GNU/Linux`
<details><summary>CPU Details (lscpu)</summary>
```
Architecture: aarch64
CPU op-mode(s): 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Vendor ID: ARM
Model name: Neoverse-V2
Model: 1
Thread(s) per core: 1
Core(s) per cluster: 16
Socket(s): -
Cluster(s): 1
Stepping: r0p1
BogoMIPS: 2000.00
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache: 1 MiB (16 instances)
L1i cache: 1 MiB (16 instances)
L2 cache: 32 MiB (16 instances)
L3 cache: 80 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-15
Vulnerability Gather data sampling: Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1: Mitigation; __user pointer sanitization
Vulnerability Spectre v2: Mitigation; CSV2, BHB
Vulnerability Srbds: Not affected
Vulnerability Tsa: Not affected
Vulnerability Tsx async abort: Not affected
Vulnerability Vmscape: Not affected
```
</details>
Comparing perf/dictionary-work-bounded-by-rows (cd7235fe7b7b4ad63d958c2f17bf71f7108bcb44) to 4bf32cb (merge-base) [diff](https://github.com/apache/datafusion/compare/4bf32cb46df983f8efd20d259e9e45827dce8f43..cd7235fe7b7b4ad63d958c2f17bf71f7108bcb44)
<details><summary>Run configuration</summary>
```yaml
run benchmark clickbench_partitioned
```
</details>
Results will be posted here when complete
---
[File an issue](https://github.com/adriangb/datafusion-benchmarking/issues) against this benchmark runner
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org