Skip to content

Conversation

@alamb
Copy link
Contributor

@alamb alamb commented Dec 19, 2025

Which issue does this PR close?

Note this is an alternate to #19364

Rationale for this change

@camuel found a query where DuckDB's raw grouping is is faster.

I looked into it and much of the difference can be explained by better vectorization in the comparisons and short string optimizations

What changes are included in this PR?

Optimize (will comment inline)

Are these changes tested?

By CI. See also benchmark results below. I tested manually as well

Create Data:

nice tpchgen-cli --tables=lineitem --format=parquet --scale-factor 100

Run query:

hyperfine --warmup 3 " datafusion-cli   -c \"select l_returnflag,l_linestatus, count(*) as count_order from 'lineitem.parquet' group by l_returnflag, l_linestatus;\" "

Before (main): 1.368s

Benchmark 1:  datafusion-cli   -c "select l_returnflag,l_linestatus, count(*) as count_order from 'lineitem.parquet' group by l_returnflag, l_linestatus;"
  Time (mean ± σ):      1.393 s ±  0.020 s    [User: 16.778 s, System: 0.688 s]
  Range (min … max):    1.368 s …  1.438 s    10 runs

After (this PR) 1.022s

Benchmark 1:  ./datafusion-cli-multi-gby-try2   -c "select l_returnflag,l_linestatus, count(*) as count_order from 'lineitem.parquet' group by l_returnflag, l_linestatus;"
  Time (mean ± σ):      1.022 s ±  0.015 s    [User: 11.685 s, System: 0.644 s]
  Range (min … max):    1.005 s …  1.052 s    10 runs

I have a PR that improves string view hashing performance too, see

Are there any user-facing changes?

Faster performance

@github-actions github-actions bot added the physical-plan Changes to the physical-plan crate label Dec 19, 2025
}
}

fn value(&self, buffer_index: usize, offset: usize, length: usize) -> &[u8] {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I inlined this function at the callsite and converted it to unsafe - I felt it was easier to understand why this is safe when it was next to its use

let has_nulls = array.null_count() != 0;
let array = array.as_byte_view::<B>();
let has_buffers = !array.data_buffers().is_empty();
// call specialized version based on nulls and buffers presence
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is the key optimization -- create specialized versions of the comparison based on properties of the input array

@alamb alamb changed the title Optimize muti-column grouping with StringView/ByteView (option 2) Optimize muti-column grouping with StringView/ByteView (option 2) - 25% faster Dec 19, 2025
@alamb

This comment was marked as outdated.

@alamb-ghbot
Copy link

🤖 ./gh_compare_branch.sh gh_compare_branch.sh Running
Linux aal-dev 6.14.0-1018-gcp #19~24.04.1-Ubuntu SMP Wed Sep 24 23:23:09 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing alamb/multi_byte_view_comparison2 (fbac11b) to 887aa9f diff using: tpch_mem clickbench_partitioned clickbench_extended
Results will be posted here when complete

@alamb

This comment was marked as outdated.

@alamb

This comment was marked as outdated.

@alamb-ghbot
Copy link

🤖: Benchmark completed

Details

Comparing HEAD and alamb_multi_byte_view_comparison2
--------------------
Benchmark clickbench_extended.json
--------------------
┏━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Query        ┃        HEAD ┃ alamb_multi_byte_view_comparison2 ┃    Change ┃
┡━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ QQuery 0     │  2689.51 ms │                        2597.50 ms │ no change │
│ QQuery 1     │  1216.20 ms │                        1214.37 ms │ no change │
│ QQuery 2     │  2305.07 ms │                        2305.07 ms │ no change │
│ QQuery 3     │  1189.78 ms │                        1160.96 ms │ no change │
│ QQuery 4     │  2271.11 ms │                        2291.56 ms │ no change │
│ QQuery 5     │ 28728.80 ms │                       28412.20 ms │ no change │
│ QQuery 6     │  3954.29 ms │                        4026.64 ms │ no change │
│ QQuery 7     │  3710.32 ms │                        3554.70 ms │ no change │
└──────────────┴─────────────┴───────────────────────────────────┴───────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                                ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                                │ 46065.09ms │
│ Total Time (alamb_multi_byte_view_comparison2)   │ 45562.99ms │
│ Average Time (HEAD)                              │  5758.14ms │
│ Average Time (alamb_multi_byte_view_comparison2) │  5695.37ms │
│ Queries Faster                                   │          0 │
│ Queries Slower                                   │          0 │
│ Queries with No Change                           │          8 │
│ Queries with Failure                             │          0 │
└──────────────────────────────────────────────────┴────────────┘
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query        ┃        HEAD ┃ alamb_multi_byte_view_comparison2 ┃        Change ┃
┡━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0     │     2.16 ms │                           2.48 ms │  1.15x slower │
│ QQuery 1     │    51.82 ms │                          50.65 ms │     no change │
│ QQuery 2     │   133.50 ms │                         132.64 ms │     no change │
│ QQuery 3     │   153.89 ms │                         155.23 ms │     no change │
│ QQuery 4     │  1102.07 ms │                        1201.37 ms │  1.09x slower │
│ QQuery 5     │  1453.90 ms │                        1559.36 ms │  1.07x slower │
│ QQuery 6     │     2.18 ms │                           2.10 ms │     no change │
│ QQuery 7     │    55.41 ms │                          55.75 ms │     no change │
│ QQuery 8     │  1429.47 ms │                        1496.74 ms │     no change │
│ QQuery 9     │  1849.50 ms │                        1999.96 ms │  1.08x slower │
│ QQuery 10    │   354.94 ms │                         355.97 ms │     no change │
│ QQuery 11    │   413.90 ms │                         414.56 ms │     no change │
│ QQuery 12    │  1334.93 ms │                        1487.51 ms │  1.11x slower │
│ QQuery 13    │  1986.07 ms │                        2068.27 ms │     no change │
│ QQuery 14    │  1241.81 ms │                        1314.97 ms │  1.06x slower │
│ QQuery 15    │  1234.07 ms │                        1312.82 ms │  1.06x slower │
│ QQuery 16    │  2624.73 ms │                        2641.27 ms │     no change │
│ QQuery 17    │  2617.22 ms │                        2600.45 ms │     no change │
│ QQuery 18    │  5899.74 ms │                        4967.45 ms │ +1.19x faster │
│ QQuery 19    │   128.52 ms │                         122.30 ms │     no change │
│ QQuery 20    │  1954.53 ms │                        1915.52 ms │     no change │
│ QQuery 21    │  2227.14 ms │                        2236.10 ms │     no change │
│ QQuery 22    │  4546.03 ms │                        3813.59 ms │ +1.19x faster │
│ QQuery 23    │ 17781.40 ms │                       12407.33 ms │ +1.43x faster │
│ QQuery 24    │   231.91 ms │                         227.38 ms │     no change │
│ QQuery 25    │   459.59 ms │                         484.32 ms │  1.05x slower │
│ QQuery 26    │   225.68 ms │                         218.43 ms │     no change │
│ QQuery 27    │  2847.42 ms │                        2726.87 ms │     no change │
│ QQuery 28    │ 22177.17 ms │                       23877.07 ms │  1.08x slower │
│ QQuery 29    │   954.19 ms │                         944.14 ms │     no change │
│ QQuery 30    │  1326.62 ms │                        1352.99 ms │     no change │
│ QQuery 31    │  1325.00 ms │                        1364.54 ms │     no change │
│ QQuery 32    │  4896.83 ms │                        4675.33 ms │     no change │
│ QQuery 33    │  5991.27 ms │                        5744.47 ms │     no change │
│ QQuery 34    │  6115.90 ms │                        5933.70 ms │     no change │
│ QQuery 35    │  1948.64 ms │                        1983.12 ms │     no change │
│ QQuery 36    │    68.51 ms │                          68.15 ms │     no change │
│ QQuery 37    │    44.66 ms │                          45.79 ms │     no change │
│ QQuery 38    │    67.37 ms │                          65.90 ms │     no change │
│ QQuery 39    │   101.56 ms │                         103.18 ms │     no change │
│ QQuery 40    │    25.97 ms │                          28.11 ms │  1.08x slower │
│ QQuery 41    │    23.71 ms │                          24.02 ms │     no change │
│ QQuery 42    │    21.73 ms │                          20.79 ms │     no change │
└──────────────┴─────────────┴───────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                                ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                                │ 99432.66ms │
│ Total Time (alamb_multi_byte_view_comparison2)   │ 94202.71ms │
│ Average Time (HEAD)                              │  2312.39ms │
│ Average Time (alamb_multi_byte_view_comparison2) │  2190.76ms │
│ Queries Faster                                   │          3 │
│ Queries Slower                                   │         10 │
│ Queries with No Change                           │         30 │
│ Queries with Failure                             │          0 │
└──────────────────────────────────────────────────┴────────────┘
--------------------
Benchmark tpch_mem_sf1.json
--------------------
┏━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query        ┃      HEAD ┃ alamb_multi_byte_view_comparison2 ┃        Change ┃
┡━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1     │ 179.32 ms │                         116.36 ms │ +1.54x faster │
│ QQuery 2     │  31.19 ms │                          30.11 ms │     no change │
│ QQuery 3     │  38.68 ms │                          35.42 ms │ +1.09x faster │
│ QQuery 4     │  28.97 ms │                          29.53 ms │     no change │
│ QQuery 5     │  87.89 ms │                          90.71 ms │     no change │
│ QQuery 6     │  19.78 ms │                          19.94 ms │     no change │
│ QQuery 7     │ 233.48 ms │                         251.02 ms │  1.08x slower │
│ QQuery 8     │  37.50 ms │                          37.18 ms │     no change │
│ QQuery 9     │ 109.15 ms │                         101.79 ms │ +1.07x faster │
│ QQuery 10    │  63.33 ms │                          62.79 ms │     no change │
│ QQuery 11    │  19.24 ms │                          17.82 ms │ +1.08x faster │
│ QQuery 12    │  51.81 ms │                          52.57 ms │     no change │
│ QQuery 13    │  49.95 ms │                          50.03 ms │     no change │
│ QQuery 14    │  14.21 ms │                          14.01 ms │     no change │
│ QQuery 15    │  23.81 ms │                          24.87 ms │     no change │
│ QQuery 16    │  25.04 ms │                          25.41 ms │     no change │
│ QQuery 17    │ 155.41 ms │                         159.39 ms │     no change │
│ QQuery 18    │ 292.68 ms │                         283.33 ms │     no change │
│ QQuery 19    │  37.73 ms │                          38.18 ms │     no change │
│ QQuery 20    │  49.35 ms │                          51.45 ms │     no change │
│ QQuery 21    │ 330.77 ms │                         328.11 ms │     no change │
│ QQuery 22    │  18.02 ms │                          17.56 ms │     no change │
└──────────────┴───────────┴───────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary                                ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)                                │ 1897.28ms │
│ Total Time (alamb_multi_byte_view_comparison2)   │ 1837.59ms │
│ Average Time (HEAD)                              │   86.24ms │
│ Average Time (alamb_multi_byte_view_comparison2) │   83.53ms │
│ Queries Faster                                   │         4 │
│ Queries Slower                                   │         1 │
│ Queries with No Change                           │        17 │
│ Queries with Failure                             │         0 │
└──────────────────────────────────────────────────┴───────────┘

@alamb-ghbot
Copy link

🤖 ./gh_compare_branch.sh gh_compare_branch.sh Running
Linux aal-dev 6.14.0-1018-gcp #19~24.04.1-Ubuntu SMP Wed Sep 24 23:23:09 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing alamb/multi_byte_view_comparison2 (fbac11b) to 887aa9f diff using: tpch
Results will be posted here when complete

@alamb-ghbot
Copy link

🤖: Benchmark completed

Details

Comparing HEAD and alamb_multi_byte_view_comparison2
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query        ┃      HEAD ┃ alamb_multi_byte_view_comparison2 ┃        Change ┃
┡━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1     │ 213.77 ms │                         196.11 ms │ +1.09x faster │
│ QQuery 2     │  91.78 ms │                          95.13 ms │     no change │
│ QQuery 3     │ 122.62 ms │                         123.98 ms │     no change │
│ QQuery 4     │  77.53 ms │                          76.17 ms │     no change │
│ QQuery 5     │ 170.86 ms │                         172.95 ms │     no change │
│ QQuery 6     │  67.77 ms │                          67.10 ms │     no change │
│ QQuery 7     │ 214.69 ms │                         214.12 ms │     no change │
│ QQuery 8     │ 160.98 ms │                         163.25 ms │     no change │
│ QQuery 9     │ 221.88 ms │                         220.86 ms │     no change │
│ QQuery 10    │ 181.57 ms │                         186.30 ms │     no change │
│ QQuery 11    │  75.82 ms │                          74.96 ms │     no change │
│ QQuery 12    │ 118.06 ms │                         118.82 ms │     no change │
│ QQuery 13    │ 217.47 ms │                         223.73 ms │     no change │
│ QQuery 14    │  93.36 ms │                          92.73 ms │     no change │
│ QQuery 15    │ 119.14 ms │                         121.00 ms │     no change │
│ QQuery 16    │  57.72 ms │                          58.27 ms │     no change │
│ QQuery 17    │ 267.64 ms │                         276.83 ms │     no change │
│ QQuery 18    │ 312.70 ms │                         318.99 ms │     no change │
│ QQuery 19    │ 135.78 ms │                         141.55 ms │     no change │
│ QQuery 20    │ 128.39 ms │                         125.04 ms │     no change │
│ QQuery 21    │ 261.05 ms │                         261.92 ms │     no change │
│ QQuery 22    │  43.49 ms │                          43.98 ms │     no change │
└──────────────┴───────────┴───────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary                                ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)                                │ 3354.06ms │
│ Total Time (alamb_multi_byte_view_comparison2)   │ 3373.78ms │
│ Average Time (HEAD)                              │  152.46ms │
│ Average Time (alamb_multi_byte_view_comparison2) │  153.35ms │
│ Queries Faster                                   │         1 │
│ Queries Slower                                   │         0 │
│ Queries with No Change                           │        21 │
│ Queries with Failure                             │         0 │
└──────────────────────────────────────────────────┴───────────┘

@alamb-ghbot
Copy link

🤖 ./gh_compare_branch.sh gh_compare_branch.sh Running
Linux aal-dev 6.14.0-1018-gcp #19~24.04.1-Ubuntu SMP Wed Sep 24 23:23:09 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing alamb/multi_byte_view_comparison2 (fbac11b) to 887aa9f diff using: tpch_mem clickbench_partitioned clickbench_extended
Results will be posted here when complete

@alamb
Copy link
Contributor Author

alamb commented Dec 19, 2025

run benchmark clickbench_partitioned

@alamb alamb marked this pull request as ready for review December 19, 2025 17:42
@alamb alamb added the performance Make DataFusion faster label Dec 19, 2025
@alamb-ghbot
Copy link

🤖: Benchmark completed

Details

Comparing HEAD and alamb_multi_byte_view_comparison2
--------------------
Benchmark clickbench_extended.json
--------------------
┏━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Query        ┃        HEAD ┃ alamb_multi_byte_view_comparison2 ┃    Change ┃
┡━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ QQuery 0     │  2700.45 ms │                        2677.44 ms │ no change │
│ QQuery 1     │  1159.95 ms │                        1197.95 ms │ no change │
│ QQuery 2     │  2330.85 ms │                        2334.07 ms │ no change │
│ QQuery 3     │  1178.30 ms │                        1146.19 ms │ no change │
│ QQuery 4     │  2284.84 ms │                        2276.92 ms │ no change │
│ QQuery 5     │ 28747.39 ms │                       28493.54 ms │ no change │
│ QQuery 6     │  3957.18 ms │                        4029.23 ms │ no change │
│ QQuery 7     │  3557.65 ms │                        3474.52 ms │ no change │
└──────────────┴─────────────┴───────────────────────────────────┴───────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                                ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                                │ 45916.60ms │
│ Total Time (alamb_multi_byte_view_comparison2)   │ 45629.86ms │
│ Average Time (HEAD)                              │  5739.58ms │
│ Average Time (alamb_multi_byte_view_comparison2) │  5703.73ms │
│ Queries Faster                                   │          0 │
│ Queries Slower                                   │          0 │
│ Queries with No Change                           │          8 │
│ Queries with Failure                             │          0 │
└──────────────────────────────────────────────────┴────────────┘
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query        ┃        HEAD ┃ alamb_multi_byte_view_comparison2 ┃        Change ┃
┡━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0     │     2.43 ms │                           2.37 ms │     no change │
│ QQuery 1     │    49.15 ms │                          52.64 ms │  1.07x slower │
│ QQuery 2     │   132.99 ms │                         141.52 ms │  1.06x slower │
│ QQuery 3     │   155.44 ms │                         159.32 ms │     no change │
│ QQuery 4     │  1081.83 ms │                        1146.34 ms │  1.06x slower │
│ QQuery 5     │  1464.95 ms │                        1518.31 ms │     no change │
│ QQuery 6     │     1.97 ms │                           2.08 ms │  1.05x slower │
│ QQuery 7     │    59.11 ms │                          61.25 ms │     no change │
│ QQuery 8     │  1431.81 ms │                        1436.79 ms │     no change │
│ QQuery 9     │  1809.03 ms │                        1871.12 ms │     no change │
│ QQuery 10    │   366.17 ms │                         362.12 ms │     no change │
│ QQuery 11    │   411.25 ms │                         407.04 ms │     no change │
│ QQuery 12    │  1327.64 ms │                        1397.14 ms │  1.05x slower │
│ QQuery 13    │  1983.97 ms │                        2078.97 ms │     no change │
│ QQuery 14    │  1241.99 ms │                        1296.46 ms │     no change │
│ QQuery 15    │  1254.35 ms │                        1278.65 ms │     no change │
│ QQuery 16    │  2648.86 ms │                        2649.91 ms │     no change │
│ QQuery 17    │  2628.62 ms │                        2581.72 ms │     no change │
│ QQuery 18    │  5259.83 ms │                        4904.22 ms │ +1.07x faster │
│ QQuery 19    │   122.97 ms │                         124.05 ms │     no change │
│ QQuery 20    │  1918.28 ms │                        1927.83 ms │     no change │
│ QQuery 21    │  2185.72 ms │                        2219.64 ms │     no change │
│ QQuery 22    │  5244.06 ms │                        3818.56 ms │ +1.37x faster │
│ QQuery 23    │ 20574.98 ms │                       12417.37 ms │ +1.66x faster │
│ QQuery 24    │   232.63 ms │                         219.59 ms │ +1.06x faster │
│ QQuery 25    │   473.91 ms │                         478.62 ms │     no change │
│ QQuery 26    │   228.01 ms │                         232.05 ms │     no change │
│ QQuery 27    │  2754.35 ms │                        2772.81 ms │     no change │
│ QQuery 28    │ 22082.33 ms │                       23911.70 ms │  1.08x slower │
│ QQuery 29    │   959.76 ms │                         971.02 ms │     no change │
│ QQuery 30    │  1351.33 ms │                        1357.71 ms │     no change │
│ QQuery 31    │  1371.45 ms │                        1341.83 ms │     no change │
│ QQuery 32    │  4744.82 ms │                        4708.72 ms │     no change │
│ QQuery 33    │  5773.43 ms │                        5746.40 ms │     no change │
│ QQuery 34    │  6241.54 ms │                        5965.52 ms │     no change │
│ QQuery 35    │  1984.18 ms │                        1945.71 ms │     no change │
│ QQuery 36    │    66.79 ms │                          68.83 ms │     no change │
│ QQuery 37    │    45.06 ms │                          46.69 ms │     no change │
│ QQuery 38    │    65.56 ms │                          69.80 ms │  1.06x slower │
│ QQuery 39    │   101.86 ms │                         103.57 ms │     no change │
│ QQuery 40    │    26.36 ms │                          27.34 ms │     no change │
│ QQuery 41    │    23.72 ms │                          23.68 ms │     no change │
│ QQuery 42    │    20.44 ms │                          19.92 ms │     no change │
└──────────────┴─────────────┴───────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓
┃ Benchmark Summary                                ┃             ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩
│ Total Time (HEAD)                                │ 101904.93ms │
│ Total Time (alamb_multi_byte_view_comparison2)   │  93866.92ms │
│ Average Time (HEAD)                              │   2369.88ms │
│ Average Time (alamb_multi_byte_view_comparison2) │   2182.95ms │
│ Queries Faster                                   │           4 │
│ Queries Slower                                   │           7 │
│ Queries with No Change                           │          32 │
│ Queries with Failure                             │           0 │
└──────────────────────────────────────────────────┴─────────────┘
--------------------
Benchmark tpch_mem_sf1.json
--------------------
┏━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query        ┃      HEAD ┃ alamb_multi_byte_view_comparison2 ┃        Change ┃
┡━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1     │ 129.49 ms │                         114.87 ms │ +1.13x faster │
│ QQuery 2     │  29.29 ms │                          27.06 ms │ +1.08x faster │
│ QQuery 3     │  38.04 ms │                          39.37 ms │     no change │
│ QQuery 4     │  28.85 ms │                          29.11 ms │     no change │
│ QQuery 5     │  88.29 ms │                          87.65 ms │     no change │
│ QQuery 6     │  19.62 ms │                          19.79 ms │     no change │
│ QQuery 7     │ 235.67 ms │                         242.17 ms │     no change │
│ QQuery 8     │  36.96 ms │                          38.24 ms │     no change │
│ QQuery 9     │ 107.95 ms │                         112.10 ms │     no change │
│ QQuery 10    │  63.89 ms │                          63.03 ms │     no change │
│ QQuery 11    │  18.14 ms │                          18.25 ms │     no change │
│ QQuery 12    │  52.81 ms │                          51.90 ms │     no change │
│ QQuery 13    │  48.86 ms │                          47.38 ms │     no change │
│ QQuery 14    │  14.20 ms │                          14.45 ms │     no change │
│ QQuery 15    │  24.34 ms │                          25.07 ms │     no change │
│ QQuery 16    │  25.76 ms │                          24.52 ms │     no change │
│ QQuery 17    │ 153.09 ms │                         153.79 ms │     no change │
│ QQuery 18    │ 285.87 ms │                         284.12 ms │     no change │
│ QQuery 19    │  37.27 ms │                          37.02 ms │     no change │
│ QQuery 20    │  49.15 ms │                          50.09 ms │     no change │
│ QQuery 21    │ 332.91 ms │                         319.39 ms │     no change │
│ QQuery 22    │  17.86 ms │                          17.76 ms │     no change │
└──────────────┴───────────┴───────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary                                ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)                                │ 1838.31ms │
│ Total Time (alamb_multi_byte_view_comparison2)   │ 1817.11ms │
│ Average Time (HEAD)                              │   83.56ms │
│ Average Time (alamb_multi_byte_view_comparison2) │   82.60ms │
│ Queries Faster                                   │         2 │
│ Queries Slower                                   │         0 │
│ Queries with No Change                           │        20 │
│ Queries with Failure                             │         0 │
└──────────────────────────────────────────────────┴───────────┘

@alamb-ghbot
Copy link

🤖 ./gh_compare_branch.sh gh_compare_branch.sh Running
Linux aal-dev 6.14.0-1018-gcp #19~24.04.1-Ubuntu SMP Wed Sep 24 23:23:09 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing alamb/multi_byte_view_comparison2 (fbac11b) to 887aa9f diff using: clickbench_partitioned
Results will be posted here when complete

@alamb-ghbot
Copy link

🤖: Benchmark completed

Details

Comparing HEAD and alamb_multi_byte_view_comparison2
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query        ┃        HEAD ┃ alamb_multi_byte_view_comparison2 ┃        Change ┃
┡━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0     │     2.52 ms │                           2.55 ms │     no change │
│ QQuery 1     │    51.03 ms │                          51.59 ms │     no change │
│ QQuery 2     │   132.77 ms │                         132.89 ms │     no change │
│ QQuery 3     │   155.08 ms │                         152.35 ms │     no change │
│ QQuery 4     │  1085.66 ms │                        1214.03 ms │  1.12x slower │
│ QQuery 5     │  1462.21 ms │                        1575.44 ms │  1.08x slower │
│ QQuery 6     │     2.18 ms │                           2.08 ms │     no change │
│ QQuery 7     │    57.20 ms │                          56.97 ms │     no change │
│ QQuery 8     │  1424.05 ms │                        1491.28 ms │     no change │
│ QQuery 9     │  1850.39 ms │                        1918.68 ms │     no change │
│ QQuery 10    │   365.27 ms │                         363.60 ms │     no change │
│ QQuery 11    │   418.42 ms │                         418.65 ms │     no change │
│ QQuery 12    │  1333.91 ms │                        1478.19 ms │  1.11x slower │
│ QQuery 13    │  2011.56 ms │                        2072.77 ms │     no change │
│ QQuery 14    │  1248.57 ms │                        1296.07 ms │     no change │
│ QQuery 15    │  1239.95 ms │                        1309.39 ms │  1.06x slower │
│ QQuery 16    │  2636.36 ms │                        2622.41 ms │     no change │
│ QQuery 17    │  2628.56 ms │                        2592.22 ms │     no change │
│ QQuery 18    │  5184.57 ms │                        4981.90 ms │     no change │
│ QQuery 19    │   123.29 ms │                         123.88 ms │     no change │
│ QQuery 20    │  1931.05 ms │                        1912.79 ms │     no change │
│ QQuery 21    │  2220.00 ms │                        2235.07 ms │     no change │
│ QQuery 22    │  3743.34 ms │                        3841.40 ms │     no change │
│ QQuery 23    │ 15880.05 ms │                       12342.91 ms │ +1.29x faster │
│ QQuery 24    │   206.31 ms │                         209.11 ms │     no change │
│ QQuery 25    │   470.55 ms │                         464.60 ms │     no change │
│ QQuery 26    │   220.90 ms │                         218.13 ms │     no change │
│ QQuery 27    │  2711.95 ms │                        2731.33 ms │     no change │
│ QQuery 28    │ 22301.75 ms │                       23614.08 ms │  1.06x slower │
│ QQuery 29    │   950.96 ms │                         968.16 ms │     no change │
│ QQuery 30    │  1313.69 ms │                        1351.11 ms │     no change │
│ QQuery 31    │  1380.48 ms │                        1360.35 ms │     no change │
│ QQuery 32    │  4709.84 ms │                        4859.52 ms │     no change │
│ QQuery 33    │  6005.75 ms │                        5743.05 ms │     no change │
│ QQuery 34    │  6022.48 ms │                        5953.68 ms │     no change │
│ QQuery 35    │  1929.38 ms │                        1946.64 ms │     no change │
│ QQuery 36    │    66.35 ms │                          66.54 ms │     no change │
│ QQuery 37    │    45.18 ms │                          46.62 ms │     no change │
│ QQuery 38    │    65.58 ms │                          66.86 ms │     no change │
│ QQuery 39    │   101.82 ms │                         105.28 ms │     no change │
│ QQuery 40    │    26.83 ms │                          27.45 ms │     no change │
│ QQuery 41    │    23.62 ms │                          23.70 ms │     no change │
│ QQuery 42    │    20.00 ms │                          20.34 ms │     no change │
└──────────────┴─────────────┴───────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                                ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                                │ 95761.42ms │
│ Total Time (alamb_multi_byte_view_comparison2)   │ 93965.64ms │
│ Average Time (HEAD)                              │  2227.01ms │
│ Average Time (alamb_multi_byte_view_comparison2) │  2185.25ms │
│ Queries Faster                                   │          1 │
│ Queries Slower                                   │          5 │
│ Queries with No Change                           │         37 │
│ Queries with Failure                             │          0 │
└──────────────────────────────────────────────────┴────────────┘

@Dandandan Dandandan added this pull request to the merge queue Dec 20, 2025
Merged via the queue into apache:main with commit 8cc8c11 Dec 20, 2025
33 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

performance Make DataFusion faster physical-plan Changes to the physical-plan crate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants