Draft: Use upstream arrow `coalesce` kernel in DataFusion
Which issue does this PR close?
- Related to https://github.com/apache/arrow-rs/issues/6692
- Related to #3463
Rationale for this change
I am trying to move the coalesce operation upstream into arrow-rs so that it can be reused in parquet filter pushdown and more highly optimized. See :
- https://github.com/apache/arrow-rs/pull/7597
The proposed upstream coalescer API is slightly different (guaranteed batch size, and doesn't have limit) so we must adapt the DataFusion code to handle this
What changes are included in this PR?
This PR refactors the BatchCoalescer in DataFusion to use the proposed upstream API to show that it
- Can be used (api is complete enough)
- Is not any slower
Are these changes tested?
By CI tests
Are there any user-facing changes?
No
๐ค ./gh_compare_branch.sh Benchmark Script Running
Linux aal-dev 6.11.0-1013-gcp #13~24.04.1-Ubuntu SMP Wed Apr 2 16:34:16 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing alamb/test_upstream_coalesce (e79454f48929360b2753c51d9647f9a302c9e184) to 992d156c46f6ad4f0096c4a62b293cabef63718d diff
Benchmarks: tpch_mem clickbench_partitioned clickbench_extended
Results will be posted here when complete
๐ค: Benchmark completed
Details
Comparing HEAD and alamb_test_upstream_coalesce
--------------------
Benchmark clickbench_extended.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโ
โ Query โ HEAD โ alamb_test_upstream_coalesce โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 0 โ 1903.28ms โ 1910.47ms โ no change โ
โ QQuery 1 โ 705.78ms โ 705.39ms โ no change โ
โ QQuery 2 โ 1416.79ms โ 1427.68ms โ no change โ
โ QQuery 3 โ 721.59ms โ 695.62ms โ no change โ
โ QQuery 4 โ 1438.61ms โ 1459.22ms โ no change โ
โ QQuery 5 โ 15147.47ms โ 15620.61ms โ no change โ
โ QQuery 6 โ 2025.79ms โ 2037.42ms โ no change โ
โ QQuery 7 โ 2088.81ms โ 2069.21ms โ no change โ
โ QQuery 8 โ 852.36ms โ 834.76ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 26300.48ms โ
โ Total Time (alamb_test_upstream_coalesce) โ 26760.37ms โ
โ Average Time (HEAD) โ 2922.28ms โ
โ Average Time (alamb_test_upstream_coalesce) โ 2973.37ms โ
โ Queries Faster โ 0 โ
โ Queries Slower โ 0 โ
โ Queries with No Change โ 9 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
--------------------
Benchmark clickbench_partitioned.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโ
โ Query โ HEAD โ alamb_test_upstream_coalesce โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 0 โ 15.39ms โ 16.12ms โ no change โ
โ QQuery 1 โ 33.30ms โ 33.27ms โ no change โ
โ QQuery 2 โ 81.95ms โ 81.53ms โ no change โ
โ QQuery 3 โ 99.01ms โ 95.19ms โ no change โ
โ QQuery 4 โ 680.72ms โ 583.09ms โ +1.17x faster โ
โ QQuery 5 โ 901.62ms โ 859.72ms โ no change โ
โ QQuery 6 โ 24.40ms โ 23.86ms โ no change โ
โ QQuery 7 โ 37.45ms โ 36.23ms โ no change โ
โ QQuery 8 โ 951.27ms โ 922.01ms โ no change โ
โ QQuery 9 โ 1259.35ms โ 1187.14ms โ +1.06x faster โ
โ QQuery 10 โ 270.07ms โ 260.94ms โ no change โ
โ QQuery 11 โ 301.01ms โ 298.82ms โ no change โ
โ QQuery 12 โ 929.60ms โ 920.78ms โ no change โ
โ QQuery 13 โ 1352.62ms โ 1355.67ms โ no change โ
โ QQuery 14 โ 843.74ms โ 858.27ms โ no change โ
โ QQuery 15 โ 842.01ms โ 841.71ms โ no change โ
โ QQuery 16 โ 1725.31ms โ 1755.26ms โ no change โ
โ QQuery 17 โ 1605.81ms โ 1607.33ms โ no change โ
โ QQuery 18 โ 3061.08ms โ 3122.06ms โ no change โ
โ QQuery 19 โ 84.26ms โ 81.68ms โ no change โ
โ QQuery 20 โ 1134.75ms โ 1120.94ms โ no change โ
โ QQuery 21 โ 1327.65ms โ 1341.47ms โ no change โ
โ QQuery 22 โ 2173.10ms โ 2220.13ms โ no change โ
โ QQuery 23 โ 8004.42ms โ 7989.85ms โ no change โ
โ QQuery 24 โ 468.53ms โ 466.85ms โ no change โ
โ QQuery 25 โ 383.28ms โ 389.97ms โ no change โ
โ QQuery 26 โ 538.11ms โ 527.43ms โ no change โ
โ QQuery 27 โ 1606.15ms โ 1622.52ms โ no change โ
โ QQuery 28 โ 13703.82ms โ 13070.74ms โ no change โ
โ QQuery 29 โ 520.31ms โ 525.56ms โ no change โ
โ QQuery 30 โ 796.51ms โ 839.14ms โ 1.05x slower โ
โ QQuery 31 โ 851.63ms โ 884.19ms โ no change โ
โ QQuery 32 โ 2618.12ms โ 2636.26ms โ no change โ
โ QQuery 33 โ 3372.88ms โ 3288.44ms โ no change โ
โ QQuery 34 โ 3403.04ms โ 3349.20ms โ no change โ
โ QQuery 35 โ 1296.66ms โ 1313.52ms โ no change โ
โ QQuery 36 โ 121.58ms โ 126.46ms โ no change โ
โ QQuery 37 โ 56.05ms โ 56.07ms โ no change โ
โ QQuery 38 โ 122.31ms โ 124.83ms โ no change โ
โ QQuery 39 โ 197.01ms โ 198.32ms โ no change โ
โ QQuery 40 โ 50.25ms โ 47.22ms โ +1.06x faster โ
โ QQuery 41 โ 43.47ms โ 45.99ms โ 1.06x slower โ
โ QQuery 42 โ 37.67ms โ 38.74ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 57927.27ms โ
โ Total Time (alamb_test_upstream_coalesce) โ 57164.53ms โ
โ Average Time (HEAD) โ 1347.15ms โ
โ Average Time (alamb_test_upstream_coalesce) โ 1329.41ms โ
โ Queries Faster โ 3 โ
โ Queries Slower โ 2 โ
โ Queries with No Change โ 38 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
--------------------
Benchmark tpch_mem_sf1.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโ
โ Query โ HEAD โ alamb_test_upstream_coalesce โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 1 โ 116.93ms โ 116.77ms โ no change โ
โ QQuery 2 โ 22.28ms โ 22.65ms โ no change โ
โ QQuery 3 โ 34.38ms โ 35.42ms โ no change โ
โ QQuery 4 โ 19.66ms โ 20.79ms โ 1.06x slower โ
โ QQuery 5 โ 54.59ms โ 53.23ms โ no change โ
โ QQuery 6 โ 11.97ms โ 11.95ms โ no change โ
โ QQuery 7 โ 96.84ms โ 100.06ms โ no change โ
โ QQuery 8 โ 25.69ms โ 25.35ms โ no change โ
โ QQuery 9 โ 60.26ms โ 60.42ms โ no change โ
โ QQuery 10 โ 49.39ms โ 47.08ms โ no change โ
โ QQuery 11 โ 11.41ms โ 12.24ms โ 1.07x slower โ
โ QQuery 12 โ 41.31ms โ 40.07ms โ no change โ
โ QQuery 13 โ 27.65ms โ 28.44ms โ no change โ
โ QQuery 14 โ 9.80ms โ 9.94ms โ no change โ
โ QQuery 15 โ 23.05ms โ 22.78ms โ no change โ
โ QQuery 16 โ 21.49ms โ 20.98ms โ no change โ
โ QQuery 17 โ 98.87ms โ 98.30ms โ no change โ
โ QQuery 18 โ 217.87ms โ 208.15ms โ no change โ
โ QQuery 19 โ 26.67ms โ 26.21ms โ no change โ
โ QQuery 20 โ 34.27ms โ 36.07ms โ 1.05x slower โ
โ QQuery 21 โ 160.60ms โ 163.49ms โ no change โ
โ QQuery 22 โ 16.66ms โ 16.30ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 1181.64ms โ
โ Total Time (alamb_test_upstream_coalesce) โ 1176.69ms โ
โ Average Time (HEAD) โ 53.71ms โ
โ Average Time (alamb_test_upstream_coalesce) โ 53.49ms โ
โ Queries Faster โ 0 โ
โ Queries Slower โ 3 โ
โ Queries with No Change โ 19 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโ
TLDR is that the performance looks good. I'll fixup the tests shortly
๐ค ./gh_compare_branch.sh Benchmark Script Running
Linux aal-dev 6.11.0-1013-gcp #13~24.04.1-Ubuntu SMP Wed Apr 2 16:34:16 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing alamb/test_upstream_coalesce (9e20973387ae4b04914917726c834120e592238d) to 992d156c46f6ad4f0096c4a62b293cabef63718d diff
Benchmarks: tpch_mem clickbench_partitioned clickbench_extended
Results will be posted here when complete
๐ค: Benchmark completed
Details
Comparing HEAD and alamb_test_upstream_coalesce
--------------------
Benchmark clickbench_extended.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโ
โ Query โ HEAD โ alamb_test_upstream_coalesce โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 0 โ 1914.38ms โ 1938.51ms โ no change โ
โ QQuery 1 โ 711.81ms โ 718.29ms โ no change โ
โ QQuery 2 โ 1455.52ms โ 1470.28ms โ no change โ
โ QQuery 3 โ 712.37ms โ 694.68ms โ no change โ
โ QQuery 4 โ 1449.70ms โ 1448.88ms โ no change โ
โ QQuery 5 โ 15655.93ms โ 15613.27ms โ no change โ
โ QQuery 6 โ 2014.71ms โ 2072.03ms โ no change โ
โ QQuery 7 โ 2080.97ms โ 2169.52ms โ no change โ
โ QQuery 8 โ 856.77ms โ 841.42ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 26852.14ms โ
โ Total Time (alamb_test_upstream_coalesce) โ 26966.88ms โ
โ Average Time (HEAD) โ 2983.57ms โ
โ Average Time (alamb_test_upstream_coalesce) โ 2996.32ms โ
โ Queries Faster โ 0 โ
โ Queries Slower โ 0 โ
โ Queries with No Change โ 9 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
--------------------
Benchmark clickbench_partitioned.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโ
โ Query โ HEAD โ alamb_test_upstream_coalesce โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 0 โ 15.50ms โ 15.07ms โ no change โ
โ QQuery 1 โ 32.04ms โ 32.46ms โ no change โ
โ QQuery 2 โ 85.71ms โ 81.49ms โ no change โ
โ QQuery 3 โ 101.37ms โ 96.91ms โ no change โ
โ QQuery 4 โ 635.37ms โ 605.83ms โ no change โ
โ QQuery 5 โ 846.37ms โ 857.35ms โ no change โ
โ QQuery 6 โ 25.51ms โ 22.94ms โ +1.11x faster โ
โ QQuery 7 โ 36.44ms โ 36.85ms โ no change โ
โ QQuery 8 โ 905.00ms โ 899.47ms โ no change โ
โ QQuery 9 โ 1221.22ms โ 1203.33ms โ no change โ
โ QQuery 10 โ 256.84ms โ 261.35ms โ no change โ
โ QQuery 11 โ 298.30ms โ 293.02ms โ no change โ
โ QQuery 12 โ 896.38ms โ 900.13ms โ no change โ
โ QQuery 13 โ 1319.11ms โ 1229.16ms โ +1.07x faster โ
โ QQuery 14 โ 821.82ms โ 840.52ms โ no change โ
โ QQuery 15 โ 808.55ms โ 832.04ms โ no change โ
โ QQuery 16 โ 1708.26ms โ 1717.94ms โ no change โ
โ QQuery 17 โ 1564.42ms โ 1600.58ms โ no change โ
โ QQuery 18 โ 3036.53ms โ 3090.72ms โ no change โ
โ QQuery 19 โ 83.52ms โ 83.60ms โ no change โ
โ QQuery 20 โ 1120.03ms โ 1142.33ms โ no change โ
โ QQuery 21 โ 1327.78ms โ 1340.28ms โ no change โ
โ QQuery 22 โ 2180.54ms โ 2211.59ms โ no change โ
โ QQuery 23 โ 8051.83ms โ 8092.34ms โ no change โ
โ QQuery 24 โ 467.15ms โ 463.58ms โ no change โ
โ QQuery 25 โ 393.84ms โ 390.05ms โ no change โ
โ QQuery 26 โ 540.91ms โ 522.58ms โ no change โ
โ QQuery 27 โ 1583.35ms โ 1648.93ms โ no change โ
โ QQuery 28 โ 13535.80ms โ 14249.61ms โ 1.05x slower โ
โ QQuery 29 โ 517.83ms โ 530.48ms โ no change โ
โ QQuery 30 โ 794.70ms โ 826.55ms โ no change โ
โ QQuery 31 โ 845.08ms โ 885.81ms โ no change โ
โ QQuery 32 โ 2690.84ms โ 2696.00ms โ no change โ
โ QQuery 33 โ 3326.15ms โ 3318.91ms โ no change โ
โ QQuery 34 โ 3395.28ms โ 3349.97ms โ no change โ
โ QQuery 35 โ 1271.25ms โ 1254.09ms โ no change โ
โ QQuery 36 โ 126.96ms โ 133.46ms โ 1.05x slower โ
โ QQuery 37 โ 55.58ms โ 55.47ms โ no change โ
โ QQuery 38 โ 121.97ms โ 123.72ms โ no change โ
โ QQuery 39 โ 197.25ms โ 197.97ms โ no change โ
โ QQuery 40 โ 46.12ms โ 47.56ms โ no change โ
โ QQuery 41 โ 45.89ms โ 45.86ms โ no change โ
โ QQuery 42 โ 37.90ms โ 38.37ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 57372.28ms โ
โ Total Time (alamb_test_upstream_coalesce) โ 58266.22ms โ
โ Average Time (HEAD) โ 1334.24ms โ
โ Average Time (alamb_test_upstream_coalesce) โ 1355.03ms โ
โ Queries Faster โ 2 โ
โ Queries Slower โ 2 โ
โ Queries with No Change โ 39 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
--------------------
Benchmark tpch_mem_sf1.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโ
โ Query โ HEAD โ alamb_test_upstream_coalesce โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 1 โ 118.13ms โ 113.29ms โ no change โ
โ QQuery 2 โ 22.88ms โ 21.65ms โ +1.06x faster โ
โ QQuery 3 โ 34.71ms โ 34.51ms โ no change โ
โ QQuery 4 โ 19.51ms โ 20.75ms โ 1.06x slower โ
โ QQuery 5 โ 52.61ms โ 52.95ms โ no change โ
โ QQuery 6 โ 11.99ms โ 12.01ms โ no change โ
โ QQuery 7 โ 95.89ms โ 90.98ms โ +1.05x faster โ
โ QQuery 8 โ 25.59ms โ 25.43ms โ no change โ
โ QQuery 9 โ 59.49ms โ 57.39ms โ no change โ
โ QQuery 10 โ 47.76ms โ 47.09ms โ no change โ
โ QQuery 11 โ 11.30ms โ 11.17ms โ no change โ
โ QQuery 12 โ 40.26ms โ 41.39ms โ no change โ
โ QQuery 13 โ 26.70ms โ 27.66ms โ no change โ
โ QQuery 14 โ 9.68ms โ 9.63ms โ no change โ
โ QQuery 15 โ 22.07ms โ 22.57ms โ no change โ
โ QQuery 16 โ 21.15ms โ 20.92ms โ no change โ
โ QQuery 17 โ 95.43ms โ 96.63ms โ no change โ
โ QQuery 18 โ 214.02ms โ 191.75ms โ +1.12x faster โ
โ QQuery 19 โ 28.84ms โ 25.39ms โ +1.14x faster โ
โ QQuery 20 โ 35.16ms โ 34.99ms โ no change โ
โ QQuery 21 โ 157.53ms โ 161.74ms โ no change โ
โ QQuery 22 โ 15.87ms โ 15.50ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 1166.59ms โ
โ Total Time (alamb_test_upstream_coalesce) โ 1135.38ms โ
โ Average Time (HEAD) โ 53.03ms โ
โ Average Time (alamb_test_upstream_coalesce) โ 51.61ms โ
โ Queries Faster โ 4 โ
โ Queries Slower โ 1 โ
โ Queries with No Change โ 17 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโ
๐ค ./gh_compare_branch.sh Benchmark Script Running
Linux aal-dev 6.11.0-1013-gcp #13~24.04.1-Ubuntu SMP Wed Apr 2 16:34:16 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing alamb/test_upstream_coalesce (7d6471b5c9220d013cadd7313c655081af7115af) to 1daa5ed5cc51546904d45e23cc148601d973942a diff
Benchmarks: tpch_mem clickbench_partitioned clickbench_extended
Results will be posted here when complete
https://github.com/apache/datafusion/actions/runs/15506836203/job/43662848611?pr=16249
Caused by: process didn't exit successfully:
/home/runner/work/datafusion/datafusion/target/ci/deps/fuzz-a456cc2e1bdd6367(signal: 11, SIGSEGV: invalid memory reference) Error: Process completed with exit code 101.
๐ค that isn't good
I added a PR for reverting the changes in arrow-rs https://github.com/apache/arrow-rs/pull/7623 - probably something subtle with one of the fast paths that isn't tested in arrow-rs.
I added a PR for reverting the changes in arrow-rs apache/arrow-rs#7623 - probably something subtle with one of the fast paths that isn't tested in arrow-rs.
Thank you. I have a theory: https://github.com/apache/arrow-rs/pull/7623#discussion_r2133748478
๐ค ./gh_compare_branch.sh Benchmark Script Running
Linux aal-dev 6.11.0-1013-gcp #13~24.04.1-Ubuntu SMP Wed Apr 2 16:34:16 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing alamb/test_upstream_coalesce (7d6471b5c9220d013cadd7313c655081af7115af) to 1daa5ed5cc51546904d45e23cc148601d973942a diff
Benchmarks: tpch_mem clickbench_partitioned clickbench_extended
Results will be posted here when complete
@alamb benchmark runs ok now
๐ค ./gh_compare_branch.sh Benchmark Script Running
Linux aal-dev 6.11.0-1013-gcp #13~24.04.1-Ubuntu SMP Wed Apr 2 16:34:16 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing alamb/test_upstream_coalesce (ea8b7000d7d804c532cd57b84bdf98c332904503) to 992d156c46f6ad4f0096c4a62b293cabef63718d diff
Benchmarks: tpch_mem clickbench_partitioned clickbench_extended
Results will be posted here when complete
@alamb benchmark runs ok now
Awesome -- thanks -- I restarted it now
๐ค: Benchmark completed
Details
Comparing HEAD and alamb_test_upstream_coalesce
--------------------
Benchmark clickbench_extended.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโ
โ Query โ HEAD โ alamb_test_upstream_coalesce โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 0 โ 1889.06 ms โ 1880.96 ms โ no change โ
โ QQuery 1 โ 716.77 ms โ 667.48 ms โ +1.07x faster โ
โ QQuery 2 โ 1442.19 ms โ 1381.98 ms โ no change โ
โ QQuery 3 โ 712.29 ms โ 707.44 ms โ no change โ
โ QQuery 4 โ 1455.16 ms โ 1475.63 ms โ no change โ
โ QQuery 5 โ 15533.57 ms โ 15474.07 ms โ no change โ
โ QQuery 6 โ 2038.22 ms โ 2036.86 ms โ no change โ
โ QQuery 7 โ 2061.78 ms โ 2037.80 ms โ no change โ
โ QQuery 8 โ 842.37 ms โ 847.71 ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 26691.41ms โ
โ Total Time (alamb_test_upstream_coalesce) โ 26509.93ms โ
โ Average Time (HEAD) โ 2965.71ms โ
โ Average Time (alamb_test_upstream_coalesce) โ 2945.55ms โ
โ Queries Faster โ 1 โ
โ Queries Slower โ 0 โ
โ Queries with No Change โ 8 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
--------------------
Benchmark clickbench_partitioned.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโ
โ Query โ HEAD โ alamb_test_upstream_coalesce โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 0 โ 15.65 ms โ 15.15 ms โ no change โ
โ QQuery 1 โ 32.30 ms โ 33.35 ms โ no change โ
โ QQuery 2 โ 81.46 ms โ 81.55 ms โ no change โ
โ QQuery 3 โ 96.00 ms โ 95.49 ms โ no change โ
โ QQuery 4 โ 590.78 ms โ 601.11 ms โ no change โ
โ QQuery 5 โ 854.48 ms โ 848.50 ms โ no change โ
โ QQuery 6 โ 23.10 ms โ 22.76 ms โ no change โ
โ QQuery 7 โ 37.06 ms โ 36.92 ms โ no change โ
โ QQuery 8 โ 896.05 ms โ 900.08 ms โ no change โ
โ QQuery 9 โ 1200.36 ms โ 1191.28 ms โ no change โ
โ QQuery 10 โ 262.49 ms โ 251.45 ms โ no change โ
โ QQuery 11 โ 291.65 ms โ 280.36 ms โ no change โ
โ QQuery 12 โ 904.38 ms โ 889.86 ms โ no change โ
โ QQuery 13 โ 1315.11 ms โ 1315.16 ms โ no change โ
โ QQuery 14 โ 837.89 ms โ 834.22 ms โ no change โ
โ QQuery 15 โ 821.30 ms โ 832.64 ms โ no change โ
โ QQuery 16 โ 1705.68 ms โ 1693.59 ms โ no change โ
โ QQuery 17 โ 1592.92 ms โ 1569.47 ms โ no change โ
โ QQuery 18 โ 3045.50 ms โ 3002.20 ms โ no change โ
โ QQuery 19 โ 84.78 ms โ 83.02 ms โ no change โ
โ QQuery 20 โ 1120.03 ms โ 1133.34 ms โ no change โ
โ QQuery 21 โ 1315.09 ms โ 1347.90 ms โ no change โ
โ QQuery 22 โ 2178.63 ms โ 2211.92 ms โ no change โ
โ QQuery 23 โ 8029.68 ms โ 8083.35 ms โ no change โ
โ QQuery 24 โ 461.71 ms โ 449.41 ms โ no change โ
โ QQuery 25 โ 382.66 ms โ 390.38 ms โ no change โ
โ QQuery 26 โ 529.64 ms โ 522.68 ms โ no change โ
โ QQuery 27 โ 1625.55 ms โ 1625.82 ms โ no change โ
โ QQuery 28 โ 13784.35 ms โ 12932.17 ms โ +1.07x faster โ
โ QQuery 29 โ 521.18 ms โ 524.09 ms โ no change โ
โ QQuery 30 โ 801.66 ms โ 823.84 ms โ no change โ
โ QQuery 31 โ 851.85 ms โ 852.68 ms โ no change โ
โ QQuery 32 โ 2690.63 ms โ 2635.40 ms โ no change โ
โ QQuery 33 โ 3345.68 ms โ 3295.22 ms โ no change โ
โ QQuery 34 โ 3342.67 ms โ 3308.73 ms โ no change โ
โ QQuery 35 โ 1263.11 ms โ 1267.54 ms โ no change โ
โ QQuery 36 โ 123.69 ms โ 124.38 ms โ no change โ
โ QQuery 37 โ 56.37 ms โ 58.61 ms โ no change โ
โ QQuery 38 โ 125.62 ms โ 124.93 ms โ no change โ
โ QQuery 39 โ 196.76 ms โ 196.00 ms โ no change โ
โ QQuery 40 โ 46.66 ms โ 46.58 ms โ no change โ
โ QQuery 41 โ 45.72 ms โ 46.90 ms โ no change โ
โ QQuery 42 โ 38.86 ms โ 37.39 ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 57566.75ms โ
โ Total Time (alamb_test_upstream_coalesce) โ 56617.44ms โ
โ Average Time (HEAD) โ 1338.76ms โ
โ Average Time (alamb_test_upstream_coalesce) โ 1316.68ms โ
โ Queries Faster โ 1 โ
โ Queries Slower โ 0 โ
โ Queries with No Change โ 42 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
--------------------
Benchmark tpch_mem_sf1.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโ
โ Query โ HEAD โ alamb_test_upstream_coalesce โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 1 โ 118.73 ms โ 102.68 ms โ +1.16x faster โ
โ QQuery 2 โ 22.86 ms โ 21.30 ms โ +1.07x faster โ
โ QQuery 3 โ 34.24 ms โ 33.92 ms โ no change โ
โ QQuery 4 โ 20.26 ms โ 20.20 ms โ no change โ
โ QQuery 5 โ 53.26 ms โ 50.18 ms โ +1.06x faster โ
โ QQuery 6 โ 12.20 ms โ 11.80 ms โ no change โ
โ QQuery 7 โ 98.01 ms โ 90.17 ms โ +1.09x faster โ
โ QQuery 8 โ 26.39 ms โ 25.29 ms โ no change โ
โ QQuery 9 โ 57.58 ms โ 57.16 ms โ no change โ
โ QQuery 10 โ 49.82 ms โ 45.13 ms โ +1.10x faster โ
โ QQuery 11 โ 11.63 ms โ 11.14 ms โ no change โ
โ QQuery 12 โ 40.85 ms โ 38.18 ms โ +1.07x faster โ
โ QQuery 13 โ 28.41 ms โ 28.02 ms โ no change โ
โ QQuery 14 โ 10.05 ms โ 9.69 ms โ no change โ
โ QQuery 15 โ 22.60 ms โ 22.41 ms โ no change โ
โ QQuery 16 โ 21.50 ms โ 20.11 ms โ +1.07x faster โ
โ QQuery 17 โ 97.15 ms โ 95.22 ms โ no change โ
โ QQuery 18 โ 210.39 ms โ 176.64 ms โ +1.19x faster โ
โ QQuery 19 โ 26.46 ms โ 25.16 ms โ no change โ
โ QQuery 20 โ 34.93 ms โ 33.86 ms โ no change โ
โ QQuery 21 โ 160.28 ms โ 144.59 ms โ +1.11x faster โ
โ QQuery 22 โ 17.04 ms โ 15.31 ms โ +1.11x faster โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 1174.64ms โ
โ Total Time (alamb_test_upstream_coalesce) โ 1078.14ms โ
โ Average Time (HEAD) โ 53.39ms โ
โ Average Time (alamb_test_upstream_coalesce) โ 49.01ms โ
โ Queries Faster โ 10 โ
โ Queries Slower โ 0 โ
โ Queries with No Change โ 12 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโ
๐ค: Benchmark completed
Details
This is similar to my results, some larger gains on TPC-H, smaller gains (spreaded out over different queries) for clickbench.
This is similar to my results, some larger gains on TPC-H, smaller gains (spreaded out over different queries) for clickbench.
SWEET!
Just wait until we get rid of the intermediate copy ;) it is going to be amazing
This is for me the result of not coalescing larger batches:
--- i/datafusion/physical-plan/src/coalesce/mod.rs
+++ w/datafusion/physical-plan/src/coalesce/mod.rs
@@ -33,6 +33,9 @@ pub struct LimitedBatchCoalescer {
fetch: Option<usize>,
/// Indicates if the coalescer is finished
finished: bool,
+
+ /// target batch size
+ target_batch_size: usize,
}
impl LimitedBatchCoalescer {
@@ -53,6 +56,7 @@ impl LimitedBatchCoalescer {
total_rows: 0,
fetch,
finished: false,
+ target_batch_size,
}
}
@@ -92,9 +96,15 @@ impl LimitedBatchCoalescer {
}
}
+ let num_rows = batch.num_rows();
+
self.total_rows += batch.num_rows();
self.inner.push_batch(batch)?;
+ if num_rows > self.target_batch_size / 2 {
+ self.inner.finish_buffered_batch()?;
+ }
+
Ok(false) // not at limit
}
Looks like some queries benefit from this:
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโ
โ Query โ main โ upstream_coalesce โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 1 โ 62.59 ms โ 47.70 ms โ +1.31x faster โ
โ QQuery 2 โ 12.52 ms โ 12.70 ms โ no change โ
โ QQuery 3 โ 20.40 ms โ 20.52 ms โ no change โ
โ QQuery 4 โ 13.52 ms โ 12.76 ms โ +1.06x faster โ
โ QQuery 5 โ 31.40 ms โ 30.72 ms โ no change โ
โ QQuery 6 โ 11.01 ms โ 11.13 ms โ no change โ
โ QQuery 7 โ 67.99 ms โ 68.61 ms โ no change โ
โ QQuery 8 โ 17.07 ms โ 16.47 ms โ no change โ
โ QQuery 9 โ 38.69 ms โ 35.99 ms โ +1.08x faster โ
โ QQuery 10 โ 32.05 ms โ 28.81 ms โ +1.11x faster โ
โ QQuery 11 โ 5.80 ms โ 5.78 ms โ no change โ
โ QQuery 12 โ 28.83 ms โ 27.93 ms โ no change โ
โ QQuery 13 โ 18.29 ms โ 17.37 ms โ +1.05x faster โ
โ QQuery 14 โ 5.24 ms โ 5.68 ms โ 1.08x slower โ
โ QQuery 15 โ 10.88 ms โ 11.41 ms โ no change โ
โ QQuery 16 โ 13.53 ms โ 12.77 ms โ +1.06x faster โ
โ QQuery 17 โ 54.94 ms โ 62.53 ms โ 1.14x slower โ
โ QQuery 18 โ 118.23 ms โ 115.08 ms โ no change โ
โ QQuery 19 โ 21.28 ms โ 20.00 ms โ +1.06x faster โ
โ QQuery 20 โ 20.43 ms โ 19.09 ms โ +1.07x faster โ
โ QQuery 21 โ 84.41 ms โ 82.41 ms โ no change โ
โ QQuery 22 โ 12.25 ms โ 10.74 ms โ +1.14x faster โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (main) โ 701.36ms โ
โ Total Time (upstream_coalesce) โ 676.22ms โ
โ Average Time (main) โ 31.88ms โ
โ Average Time (upstream_coalesce) โ 30.74ms โ
โ Queries Faster โ 9 โ
โ Queries Slower โ 2 โ
โ Queries with No Change โ 11 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโ
This is for me the result of not coalescing larger batches:
Nice
๐ค ./gh_compare_branch.sh Benchmark Script Running
Linux aal-dev 6.11.0-1015-gcp #15~24.04.1-Ubuntu SMP Thu Apr 24 20:41:05 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing alamb/test_upstream_coalesce (ed31ce17d8743c3decd2dfbcb1e4bdce36d8132b) to 0c3bb78e24722e2a4f19cdc9a76f1c498949f5be diff
Benchmarks: tpch_mem clickbench_partitioned clickbench_extended
Results will be posted here when complete
๐ค: Benchmark completed
Details
Comparing HEAD and alamb_test_upstream_coalesce
--------------------
Benchmark clickbench_extended.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโ
โ Query โ HEAD โ alamb_test_upstream_coalesce โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 0 โ 1828.36 ms โ 1854.51 ms โ no change โ
โ QQuery 1 โ 723.60 ms โ 683.35 ms โ +1.06x faster โ
โ QQuery 2 โ 1384.70 ms โ 1321.27 ms โ no change โ
โ QQuery 3 โ 658.78 ms โ 642.70 ms โ no change โ
โ QQuery 4 โ 1342.72 ms โ 1349.52 ms โ no change โ
โ QQuery 5 โ 15021.90 ms โ 15188.07 ms โ no change โ
โ QQuery 6 โ 1999.39 ms โ 1980.18 ms โ no change โ
โ QQuery 7 โ 1953.41 ms โ 1920.72 ms โ no change โ
โ QQuery 8 โ 808.13 ms โ 797.19 ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 25720.98ms โ
โ Total Time (alamb_test_upstream_coalesce) โ 25737.51ms โ
โ Average Time (HEAD) โ 2857.89ms โ
โ Average Time (alamb_test_upstream_coalesce) โ 2859.72ms โ
โ Queries Faster โ 1 โ
โ Queries Slower โ 0 โ
โ Queries with No Change โ 8 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
--------------------
Benchmark clickbench_partitioned.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโ
โ Query โ HEAD โ alamb_test_upstream_coalesce โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 0 โ 15.55 ms โ 15.10 ms โ no change โ
โ QQuery 1 โ 33.14 ms โ 33.18 ms โ no change โ
โ QQuery 2 โ 80.86 ms โ 81.13 ms โ no change โ
โ QQuery 3 โ 96.22 ms โ 98.51 ms โ no change โ
โ QQuery 4 โ 593.20 ms โ 597.56 ms โ no change โ
โ QQuery 5 โ 847.54 ms โ 817.57 ms โ no change โ
โ QQuery 6 โ 23.11 ms โ 25.77 ms โ 1.12x slower โ
โ QQuery 7 โ 35.71 ms โ 35.94 ms โ no change โ
โ QQuery 8 โ 860.27 ms โ 872.05 ms โ no change โ
โ QQuery 9 โ 1176.62 ms โ 1162.75 ms โ no change โ
โ QQuery 10 โ 260.45 ms โ 245.56 ms โ +1.06x faster โ
โ QQuery 11 โ 290.23 ms โ 273.78 ms โ +1.06x faster โ
โ QQuery 12 โ 878.76 ms โ 875.99 ms โ no change โ
โ QQuery 13 โ 1250.59 ms โ 1166.84 ms โ +1.07x faster โ
โ QQuery 14 โ 815.43 ms โ 795.20 ms โ no change โ
โ QQuery 15 โ 789.66 ms โ 806.26 ms โ no change โ
โ QQuery 16 โ 1652.56 ms โ 1601.31 ms โ no change โ
โ QQuery 17 โ 1631.03 ms โ 1584.09 ms โ no change โ
โ QQuery 18 โ 2907.58 ms โ 2860.38 ms โ no change โ
โ QQuery 19 โ 88.03 ms โ 85.04 ms โ no change โ
โ QQuery 20 โ 1116.73 ms โ 1094.13 ms โ no change โ
โ QQuery 21 โ 1231.96 ms โ 1243.58 ms โ no change โ
โ QQuery 22 โ 2086.33 ms โ 2060.10 ms โ no change โ
โ QQuery 23 โ 7609.11 ms โ 7638.07 ms โ no change โ
โ QQuery 24 โ 446.74 ms โ 432.72 ms โ no change โ
โ QQuery 25 โ 378.26 ms โ 364.62 ms โ no change โ
โ QQuery 26 โ 517.69 ms โ 485.77 ms โ +1.07x faster โ
โ QQuery 27 โ 1470.79 ms โ 1585.42 ms โ 1.08x slower โ
โ QQuery 28 โ 11761.10 ms โ 12264.48 ms โ no change โ
โ QQuery 29 โ 513.95 ms โ 526.86 ms โ no change โ
โ QQuery 30 โ 765.22 ms โ 809.07 ms โ 1.06x slower โ
โ QQuery 31 โ 825.49 ms โ 823.74 ms โ no change โ
โ QQuery 32 โ 2502.42 ms โ 2499.88 ms โ no change โ
โ QQuery 33 โ 3170.06 ms โ 3128.32 ms โ no change โ
โ QQuery 34 โ 3162.98 ms โ 3156.29 ms โ no change โ
โ QQuery 35 โ 1263.14 ms โ 1255.38 ms โ no change โ
โ QQuery 36 โ 121.47 ms โ 120.76 ms โ no change โ
โ QQuery 37 โ 57.52 ms โ 55.48 ms โ no change โ
โ QQuery 38 โ 121.35 ms โ 119.58 ms โ no change โ
โ QQuery 39 โ 188.51 ms โ 191.79 ms โ no change โ
โ QQuery 40 โ 49.48 ms โ 47.64 ms โ no change โ
โ QQuery 41 โ 43.56 ms โ 44.27 ms โ no change โ
โ QQuery 42 โ 38.51 ms โ 38.18 ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 53768.90ms โ
โ Total Time (alamb_test_upstream_coalesce) โ 54020.19ms โ
โ Average Time (HEAD) โ 1250.44ms โ
โ Average Time (alamb_test_upstream_coalesce) โ 1256.28ms โ
โ Queries Faster โ 4 โ
โ Queries Slower โ 3 โ
โ Queries with No Change โ 36 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
--------------------
Benchmark tpch_mem_sf1.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโ
โ Query โ HEAD โ alamb_test_upstream_coalesce โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 1 โ 102.61 ms โ 92.16 ms โ +1.11x faster โ
โ QQuery 2 โ 20.52 ms โ 21.48 ms โ no change โ
โ QQuery 3 โ 32.05 ms โ 32.95 ms โ no change โ
โ QQuery 4 โ 18.62 ms โ 19.13 ms โ no change โ
โ QQuery 5 โ 49.90 ms โ 48.34 ms โ no change โ
โ QQuery 6 โ 11.97 ms โ 11.81 ms โ no change โ
โ QQuery 7 โ 87.76 ms โ 84.68 ms โ no change โ
โ QQuery 8 โ 23.83 ms โ 24.85 ms โ no change โ
โ QQuery 9 โ 54.08 ms โ 54.05 ms โ no change โ
โ QQuery 10 โ 43.02 ms โ 42.77 ms โ no change โ
โ QQuery 11 โ 11.23 ms โ 11.41 ms โ no change โ
โ QQuery 12 โ 34.69 ms โ 33.75 ms โ no change โ
โ QQuery 13 โ 26.52 ms โ 25.46 ms โ no change โ
โ QQuery 14 โ 9.55 ms โ 9.97 ms โ no change โ
โ QQuery 15 โ 18.85 ms โ 19.02 ms โ no change โ
โ QQuery 16 โ 19.09 ms โ 17.96 ms โ +1.06x faster โ
โ QQuery 17 โ 94.73 ms โ 94.57 ms โ no change โ
โ QQuery 18 โ 194.78 ms โ 172.17 ms โ +1.13x faster โ
โ QQuery 19 โ 25.89 ms โ 24.97 ms โ no change โ
โ QQuery 20 โ 33.05 ms โ 32.02 ms โ no change โ
โ QQuery 21 โ 148.87 ms โ 143.28 ms โ no change โ
โ QQuery 22 โ 14.76 ms โ 14.74 ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 1076.36ms โ
โ Total Time (alamb_test_upstream_coalesce) โ 1031.55ms โ
โ Average Time (HEAD) โ 48.93ms โ
โ Average Time (alamb_test_upstream_coalesce) โ 46.89ms โ
โ Queries Faster โ 3 โ
โ Queries Slower โ 0 โ
โ Queries with No Change โ 19 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโ
๐ค ./gh_compare_branch.sh Benchmark Script Running
Linux aal-dev 6.11.0-1015-gcp #15~24.04.1-Ubuntu SMP Thu Apr 24 20:41:05 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing alamb/test_upstream_coalesce (c5bb25ecd54f1d026a603f615af2f3ae730003c1) to e6df27c3ba49b32fef0689c87cb787d2f6948939 diff
Benchmarks: tpch_mem clickbench_partitioned clickbench_extended
Results will be posted here when complete
๐ค: Benchmark completed
Details
Comparing HEAD and alamb_test_upstream_coalesce
--------------------
Benchmark clickbench_extended.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโ
โ Query โ HEAD โ alamb_test_upstream_coalesce โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 0 โ 1932.11 ms โ 1959.62 ms โ no change โ
โ QQuery 1 โ 671.60 ms โ 731.10 ms โ 1.09x slower โ
โ QQuery 2 โ 1354.58 ms โ 1390.01 ms โ no change โ
โ QQuery 3 โ 677.33 ms โ 672.01 ms โ no change โ
โ QQuery 4 โ 1359.71 ms โ 1413.07 ms โ no change โ
โ QQuery 5 โ 15014.69 ms โ 15070.00 ms โ no change โ
โ QQuery 6 โ 2038.40 ms โ 2077.47 ms โ no change โ
โ QQuery 7 โ 1899.44 ms โ 1917.93 ms โ no change โ
โ QQuery 8 โ 799.21 ms โ 802.77 ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 25747.08ms โ
โ Total Time (alamb_test_upstream_coalesce) โ 26033.98ms โ
โ Average Time (HEAD) โ 2860.79ms โ
โ Average Time (alamb_test_upstream_coalesce) โ 2892.66ms โ
โ Queries Faster โ 0 โ
โ Queries Slower โ 1 โ
โ Queries with No Change โ 8 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
--------------------
Benchmark clickbench_partitioned.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโ
โ Query โ HEAD โ alamb_test_upstream_coalesce โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 0 โ 15.29 ms โ 14.86 ms โ no change โ
โ QQuery 1 โ 32.32 ms โ 32.47 ms โ no change โ
โ QQuery 2 โ 80.82 ms โ 83.09 ms โ no change โ
โ QQuery 3 โ 97.30 ms โ 100.35 ms โ no change โ
โ QQuery 4 โ 582.52 ms โ 601.94 ms โ no change โ
โ QQuery 5 โ 855.20 ms โ 890.36 ms โ no change โ
โ QQuery 6 โ 24.39 ms โ 22.99 ms โ +1.06x faster โ
โ QQuery 7 โ 37.26 ms โ 37.48 ms โ no change โ
โ QQuery 8 โ 870.44 ms โ 903.78 ms โ no change โ
โ QQuery 9 โ 1149.36 ms โ 1158.10 ms โ no change โ
โ QQuery 10 โ 254.65 ms โ 246.37 ms โ no change โ
โ QQuery 11 โ 283.28 ms โ 274.40 ms โ no change โ
โ QQuery 12 โ 893.90 ms โ 869.23 ms โ no change โ
โ QQuery 13 โ 1245.44 ms โ 1204.88 ms โ no change โ
โ QQuery 14 โ 823.03 ms โ 807.97 ms โ no change โ
โ QQuery 15 โ 784.04 ms โ 779.40 ms โ no change โ
โ QQuery 16 โ 1624.44 ms โ 1598.59 ms โ no change โ
โ QQuery 17 โ 1621.59 ms โ 1594.75 ms โ no change โ
โ QQuery 18 โ 2897.95 ms โ 2867.76 ms โ no change โ
โ QQuery 19 โ 85.75 ms โ 85.91 ms โ no change โ
โ QQuery 20 โ 1137.00 ms โ 1185.54 ms โ no change โ
โ QQuery 21 โ 1285.35 ms โ 1311.01 ms โ no change โ
โ QQuery 22 โ 2134.45 ms โ 2186.42 ms โ no change โ
โ QQuery 23 โ 7323.06 ms โ 7573.71 ms โ no change โ
โ QQuery 24 โ 438.82 ms โ 427.57 ms โ no change โ
โ QQuery 25 โ 309.06 ms โ 298.56 ms โ no change โ
โ QQuery 26 โ 435.91 ms โ 431.97 ms โ no change โ
โ QQuery 27 โ 1513.35 ms โ 1592.76 ms โ 1.05x slower โ
โ QQuery 28 โ 11798.50 ms โ 12256.59 ms โ no change โ
โ QQuery 29 โ 524.57 ms โ 532.43 ms โ no change โ
โ QQuery 30 โ 762.01 ms โ 807.18 ms โ 1.06x slower โ
โ QQuery 31 โ 776.54 ms โ 818.54 ms โ 1.05x slower โ
โ QQuery 32 โ 2461.47 ms โ 2445.66 ms โ no change โ
โ QQuery 33 โ 3151.15 ms โ 3163.82 ms โ no change โ
โ QQuery 34 โ 3136.04 ms โ 3162.43 ms โ no change โ
โ QQuery 35 โ 1282.86 ms โ 1254.00 ms โ no change โ
โ QQuery 36 โ 123.18 ms โ 128.16 ms โ no change โ
โ QQuery 37 โ 55.08 ms โ 57.78 ms โ no change โ
โ QQuery 38 โ 120.54 ms โ 123.58 ms โ no change โ
โ QQuery 39 โ 200.20 ms โ 195.98 ms โ no change โ
โ QQuery 40 โ 48.71 ms โ 48.11 ms โ no change โ
โ QQuery 41 โ 44.78 ms โ 43.76 ms โ no change โ
โ QQuery 42 โ 38.79 ms โ 38.68 ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 53360.37ms โ
โ Total Time (alamb_test_upstream_coalesce) โ 54258.91ms โ
โ Average Time (HEAD) โ 1240.94ms โ
โ Average Time (alamb_test_upstream_coalesce) โ 1261.84ms โ
โ Queries Faster โ 1 โ
โ Queries Slower โ 3 โ
โ Queries with No Change โ 39 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
--------------------
Benchmark tpch_mem_sf1.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโ
โ Query โ HEAD โ alamb_test_upstream_coalesce โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 1 โ 97.12 ms โ 89.91 ms โ +1.08x faster โ
โ QQuery 2 โ 20.42 ms โ 21.16 ms โ no change โ
โ QQuery 3 โ 32.17 ms โ 32.80 ms โ no change โ
โ QQuery 4 โ 17.93 ms โ 19.10 ms โ 1.06x slower โ
โ QQuery 5 โ 48.27 ms โ 49.10 ms โ no change โ
โ QQuery 6 โ 11.91 ms โ 11.81 ms โ no change โ
โ QQuery 7 โ 88.52 ms โ 83.99 ms โ +1.05x faster โ
โ QQuery 8 โ 22.96 ms โ 23.81 ms โ no change โ
โ QQuery 9 โ 53.28 ms โ 53.21 ms โ no change โ
โ QQuery 10 โ 42.29 ms โ 43.34 ms โ no change โ
โ QQuery 11 โ 11.12 ms โ 11.29 ms โ no change โ
โ QQuery 12 โ 34.22 ms โ 33.59 ms โ no change โ
โ QQuery 13 โ 26.44 ms โ 26.00 ms โ no change โ
โ QQuery 14 โ 10.09 ms โ 9.87 ms โ no change โ
โ QQuery 15 โ 20.10 ms โ 19.39 ms โ no change โ
โ QQuery 16 โ 18.92 ms โ 18.02 ms โ no change โ
โ QQuery 17 โ 96.13 ms โ 94.21 ms โ no change โ
โ QQuery 18 โ 190.71 ms โ 172.82 ms โ +1.10x faster โ
โ QQuery 19 โ 25.35 ms โ 26.69 ms โ 1.05x slower โ
โ QQuery 20 โ 31.94 ms โ 32.32 ms โ no change โ
โ QQuery 21 โ 150.45 ms โ 147.83 ms โ no change โ
โ QQuery 22 โ 14.93 ms โ 14.82 ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 1065.26ms โ
โ Total Time (alamb_test_upstream_coalesce) โ 1035.06ms โ
โ Average Time (HEAD) โ 48.42ms โ
โ Average Time (alamb_test_upstream_coalesce) โ 47.05ms โ
โ Queries Faster โ 3 โ
โ Queries Slower โ 2 โ
โ Queries with No Change โ 17 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโ
Thank you for your contribution. Unfortunately, this pull request is stale because it has been open 60 days with no activity. Please remove the stale label or comment or this will be closed in 7 days.
@zhuqi-lucas is working on this in https://github.com/apache/datafusion/pull/17105 instead