feat: Support `u32` indices for `HashJoinExec`
Which issue does this PR close?
- Closes #16179 .
Rationale for this change
We can use u32 indices instead of u64 indices when there are less than u32::MAX rows when building the hashmap. This acts as a memory optimization
What changes are included in this PR?
During HashJoinExec we construct the JoinLeftData with a Box<dyn JoinHashMapType> choosing between a u32 indice or u64 JoinHashMap.
I changed the JoinHashMapType to hold the update_from_iter, get_matched_indice, and get_matched_indices_with_limit_offset and split the JoinHashMap into JoinHashMapU32 and JoinHashMapU64.
I deliberately did not try to expose a generic in the trait, nor did I try to create a generic on the JoinHashMap struct as doing so would lead to many problems with having to call preceding functions with a generic; doing so is not possible since we are determining the JoinHashMapType during runtime.
Are these changes tested?
Yes I added a test for checking the hashmap created using u32 indices.
cc @Dandandan
๐ค ./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 support-u32-hashmap (732fa2187396749b4abc40b034b4d60db396b403) to 056f5462bbc3de620f55e793343bc3a2276bd3d7 diff
Benchmarks: tpch_mem clickbench_partitioned clickbench_extended
Results will be posted here when complete
๐ค: Benchmark completed
Details
Comparing HEAD and support-u32-hashmap
--------------------
Benchmark clickbench_extended.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโ
โ Query โ HEAD โ support-u32-hashmap โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 0 โ 1891.38 ms โ 1886.58 ms โ no change โ
โ QQuery 1 โ 697.56 ms โ 704.74 ms โ no change โ
โ QQuery 2 โ 1381.91 ms โ 1361.41 ms โ no change โ
โ QQuery 3 โ 669.87 ms โ 634.92 ms โ +1.06x faster โ
โ QQuery 4 โ 1327.15 ms โ 1339.32 ms โ no change โ
โ QQuery 5 โ 14912.55 ms โ 14887.37 ms โ no change โ
โ QQuery 6 โ 2044.07 ms โ 2059.57 ms โ no change โ
โ QQuery 7 โ 1784.47 ms โ 1873.16 ms โ no change โ
โ QQuery 8 โ 797.99 ms โ 802.46 ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 25506.95ms โ
โ Total Time (support-u32-hashmap) โ 25549.53ms โ
โ Average Time (HEAD) โ 2834.11ms โ
โ Average Time (support-u32-hashmap) โ 2838.84ms โ
โ Queries Faster โ 1 โ
โ Queries Slower โ 0 โ
โ Queries with No Change โ 8 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
--------------------
Benchmark clickbench_partitioned.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโ
โ Query โ HEAD โ support-u32-hashmap โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 0 โ 15.40 ms โ 15.56 ms โ no change โ
โ QQuery 1 โ 33.85 ms โ 33.67 ms โ no change โ
โ QQuery 2 โ 81.80 ms โ 80.27 ms โ no change โ
โ QQuery 3 โ 94.51 ms โ 98.91 ms โ no change โ
โ QQuery 4 โ 580.34 ms โ 587.97 ms โ no change โ
โ QQuery 5 โ 818.51 ms โ 852.27 ms โ no change โ
โ QQuery 6 โ 22.18 ms โ 23.65 ms โ 1.07x slower โ
โ QQuery 7 โ 36.35 ms โ 36.60 ms โ no change โ
โ QQuery 8 โ 840.07 ms โ 846.70 ms โ no change โ
โ QQuery 9 โ 1163.06 ms โ 1126.59 ms โ no change โ
โ QQuery 10 โ 256.44 ms โ 253.13 ms โ no change โ
โ QQuery 11 โ 284.27 ms โ 275.93 ms โ no change โ
โ QQuery 12 โ 855.55 ms โ 892.86 ms โ no change โ
โ QQuery 13 โ 1240.05 ms โ 1256.85 ms โ no change โ
โ QQuery 14 โ 788.52 ms โ 799.55 ms โ no change โ
โ QQuery 15 โ 756.94 ms โ 759.38 ms โ no change โ
โ QQuery 16 โ 1588.12 ms โ 1573.61 ms โ no change โ
โ QQuery 17 โ 1596.56 ms โ 1595.53 ms โ no change โ
โ QQuery 18 โ 2844.62 ms โ 2904.45 ms โ no change โ
โ QQuery 19 โ 82.55 ms โ 85.96 ms โ no change โ
โ QQuery 20 โ 1133.70 ms โ 1187.01 ms โ no change โ
โ QQuery 21 โ 1273.35 ms โ 1310.45 ms โ no change โ
โ QQuery 22 โ 2112.94 ms โ 2171.74 ms โ no change โ
โ QQuery 23 โ 7356.55 ms โ 7416.88 ms โ no change โ
โ QQuery 24 โ 427.69 ms โ 444.19 ms โ no change โ
โ QQuery 25 โ 299.39 ms โ 302.95 ms โ no change โ
โ QQuery 26 โ 433.22 ms โ 449.51 ms โ no change โ
โ QQuery 27 โ 1555.11 ms โ 1553.18 ms โ no change โ
โ QQuery 28 โ 11668.95 ms โ 11887.97 ms โ no change โ
โ QQuery 29 โ 519.95 ms โ 508.95 ms โ no change โ
โ QQuery 30 โ 768.44 ms โ 778.51 ms โ no change โ
โ QQuery 31 โ 799.04 ms โ 818.27 ms โ no change โ
โ QQuery 32 โ 2409.37 ms โ 2374.14 ms โ no change โ
โ QQuery 33 โ 3138.93 ms โ 3153.14 ms โ no change โ
โ QQuery 34 โ 3162.98 ms โ 3160.19 ms โ no change โ
โ QQuery 35 โ 1212.81 ms โ 1231.29 ms โ no change โ
โ QQuery 36 โ 123.25 ms โ 125.52 ms โ no change โ
โ QQuery 37 โ 57.19 ms โ 57.98 ms โ no change โ
โ QQuery 38 โ 127.02 ms โ 124.89 ms โ no change โ
โ QQuery 39 โ 195.28 ms โ 197.94 ms โ no change โ
โ QQuery 40 โ 47.18 ms โ 48.68 ms โ no change โ
โ QQuery 41 โ 45.15 ms โ 42.97 ms โ no change โ
โ QQuery 42 โ 38.79 ms โ 39.72 ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 52886.01ms โ
โ Total Time (support-u32-hashmap) โ 53485.49ms โ
โ Average Time (HEAD) โ 1229.91ms โ
โ Average Time (support-u32-hashmap) โ 1243.85ms โ
โ Queries Faster โ 0 โ
โ Queries Slower โ 1 โ
โ Queries with No Change โ 42 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
--------------------
Benchmark tpch_mem_sf1.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโ
โ Query โ HEAD โ support-u32-hashmap โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 1 โ 100.68 ms โ 99.40 ms โ no change โ
โ QQuery 2 โ 21.39 ms โ 21.69 ms โ no change โ
โ QQuery 3 โ 32.64 ms โ 32.28 ms โ no change โ
โ QQuery 4 โ 18.13 ms โ 18.58 ms โ no change โ
โ QQuery 5 โ 48.89 ms โ 49.42 ms โ no change โ
โ QQuery 6 โ 11.87 ms โ 11.86 ms โ no change โ
โ QQuery 7 โ 87.37 ms โ 83.45 ms โ no change โ
โ QQuery 8 โ 23.84 ms โ 23.90 ms โ no change โ
โ QQuery 9 โ 53.64 ms โ 53.53 ms โ no change โ
โ QQuery 10 โ 42.80 ms โ 42.86 ms โ no change โ
โ QQuery 11 โ 11.21 ms โ 11.22 ms โ no change โ
โ QQuery 12 โ 34.76 ms โ 34.72 ms โ no change โ
โ QQuery 13 โ 26.15 ms โ 26.24 ms โ no change โ
โ QQuery 14 โ 9.82 ms โ 9.88 ms โ no change โ
โ QQuery 15 โ 19.41 ms โ 19.59 ms โ no change โ
โ QQuery 16 โ 18.81 ms โ 18.85 ms โ no change โ
โ QQuery 17 โ 96.08 ms โ 94.52 ms โ no change โ
โ QQuery 18 โ 193.90 ms โ 189.03 ms โ no change โ
โ QQuery 19 โ 25.54 ms โ 25.12 ms โ no change โ
โ QQuery 20 โ 33.31 ms โ 31.69 ms โ no change โ
โ QQuery 21 โ 148.25 ms โ 146.30 ms โ no change โ
โ QQuery 22 โ 15.18 ms โ 15.31 ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 1073.66ms โ
โ Total Time (support-u32-hashmap) โ 1059.45ms โ
โ Average Time (HEAD) โ 48.80ms โ
โ Average Time (support-u32-hashmap) โ 48.16ms โ
โ Queries Faster โ 0 โ
โ Queries Slower โ 0 โ
โ Queries with No Change โ 22 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโ
Those benchmarks make sense, just saves memory.
@Dandandan Would you be able to take a look? thanks!
@Dandandan I can see if I can run some benchmarks.
@alamb this should be good to go, i'll see if I can implement some much needed hash join spilling after this gets merged ๐
๐ค ./gh_compare_branch.sh Benchmark Script Running
Linux aal-dev 6.11.0-1016-gcp #16~24.04.1-Ubuntu SMP Wed May 28 02:40:52 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing support-u32-hashmap (6c1543d549bdd90603b91e8c4644b5545b8fe44e) to ebb8e9591322ee0a6fbc42cd43ce60f0e20981ba diff using: tpch_mem clickbench_partitioned clickbench_extended
Results will be posted here when complete
๐ค: Benchmark completed
Details
Comparing HEAD and support-u32-hashmap
--------------------
Benchmark clickbench_extended.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโ
โ Query โ HEAD โ support-u32-hashmap โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 0 โ 2104.73 ms โ 1846.85 ms โ +1.14x faster โ
โ QQuery 1 โ 694.10 ms โ 813.41 ms โ 1.17x slower โ
โ QQuery 2 โ 1312.83 ms โ 1507.45 ms โ 1.15x slower โ
โ QQuery 3 โ 691.45 ms โ 678.94 ms โ no change โ
โ QQuery 4 โ 1373.17 ms โ 1348.65 ms โ no change โ
โ QQuery 5 โ 15124.71 ms โ 15473.54 ms โ no change โ
โ QQuery 6 โ 2047.34 ms โ 2060.53 ms โ no change โ
โ QQuery 7 โ 1873.73 ms โ 1838.61 ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 25222.05ms โ
โ Total Time (support-u32-hashmap) โ 25567.98ms โ
โ Average Time (HEAD) โ 3152.76ms โ
โ Average Time (support-u32-hashmap) โ 3196.00ms โ
โ Queries Faster โ 1 โ
โ Queries Slower โ 2 โ
โ Queries with No Change โ 5 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
--------------------
Benchmark clickbench_partitioned.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโ
โ Query โ HEAD โ support-u32-hashmap โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 0 โ 2.43 ms โ 2.18 ms โ +1.11x faster โ
โ QQuery 1 โ 35.82 ms โ 34.78 ms โ no change โ
โ QQuery 2 โ 82.71 ms โ 82.00 ms โ no change โ
โ QQuery 3 โ 97.18 ms โ 97.71 ms โ no change โ
โ QQuery 4 โ 649.57 ms โ 589.40 ms โ +1.10x faster โ
โ QQuery 5 โ 880.40 ms โ 885.32 ms โ no change โ
โ QQuery 6 โ 2.31 ms โ 2.19 ms โ +1.06x faster โ
โ QQuery 7 โ 38.57 ms โ 39.24 ms โ no change โ
โ QQuery 8 โ 875.15 ms โ 871.19 ms โ no change โ
โ QQuery 9 โ 1204.58 ms โ 1197.94 ms โ no change โ
โ QQuery 10 โ 256.41 ms โ 264.73 ms โ no change โ
โ QQuery 11 โ 295.15 ms โ 294.16 ms โ no change โ
โ QQuery 12 โ 876.87 ms โ 898.49 ms โ no change โ
โ QQuery 13 โ 1253.67 ms โ 1260.00 ms โ no change โ
โ QQuery 14 โ 805.60 ms โ 822.48 ms โ no change โ
โ QQuery 15 โ 775.34 ms โ 792.68 ms โ no change โ
โ QQuery 16 โ 1582.94 ms โ 1617.44 ms โ no change โ
โ QQuery 17 โ 1575.57 ms โ 1620.19 ms โ no change โ
โ QQuery 18 โ 2812.98 ms โ 2877.62 ms โ no change โ
โ QQuery 19 โ 86.50 ms โ 86.36 ms โ no change โ
โ QQuery 20 โ 1147.33 ms โ 1142.38 ms โ no change โ
โ QQuery 21 โ 1304.30 ms โ 1299.10 ms โ no change โ
โ QQuery 22 โ 2109.41 ms โ 2165.23 ms โ no change โ
โ QQuery 23 โ 7382.16 ms โ 7578.04 ms โ no change โ
โ QQuery 24 โ 433.78 ms โ 449.56 ms โ no change โ
โ QQuery 25 โ 305.40 ms โ 308.23 ms โ no change โ
โ QQuery 26 โ 428.78 ms โ 444.90 ms โ no change โ
โ QQuery 27 โ 1537.21 ms โ 1565.57 ms โ no change โ
โ QQuery 28 โ 12883.98 ms โ 11966.19 ms โ +1.08x faster โ
โ QQuery 29 โ 532.77 ms โ 513.35 ms โ no change โ
โ QQuery 30 โ 765.17 ms โ 783.38 ms โ no change โ
โ QQuery 31 โ 770.79 ms โ 808.37 ms โ no change โ
โ QQuery 32 โ 2367.00 ms โ 2361.17 ms โ no change โ
โ QQuery 33 โ 3106.32 ms โ 3186.17 ms โ no change โ
โ QQuery 34 โ 3283.80 ms โ 3176.69 ms โ no change โ
โ QQuery 35 โ 1228.46 ms โ 1254.86 ms โ no change โ
โ QQuery 36 โ 122.51 ms โ 122.45 ms โ no change โ
โ QQuery 37 โ 54.42 ms โ 52.77 ms โ no change โ
โ QQuery 38 โ 118.02 ms โ 118.88 ms โ no change โ
โ QQuery 39 โ 196.50 ms โ 194.35 ms โ no change โ
โ QQuery 40 โ 40.97 ms โ 40.46 ms โ no change โ
โ QQuery 41 โ 39.08 ms โ 38.28 ms โ no change โ
โ QQuery 42 โ 33.07 ms โ 33.30 ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 54381.00ms โ
โ Total Time (support-u32-hashmap) โ 53939.79ms โ
โ Average Time (HEAD) โ 1264.67ms โ
โ Average Time (support-u32-hashmap) โ 1254.41ms โ
โ Queries Faster โ 4 โ
โ Queries Slower โ 0 โ
โ Queries with No Change โ 39 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
--------------------
Benchmark tpch_mem_sf1.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโ
โ Query โ HEAD โ support-u32-hashmap โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 1 โ 98.54 ms โ 97.07 ms โ no change โ
โ QQuery 2 โ 20.04 ms โ 20.71 ms โ no change โ
โ QQuery 3 โ 32.35 ms โ 31.90 ms โ no change โ
โ QQuery 4 โ 18.71 ms โ 18.54 ms โ no change โ
โ QQuery 5 โ 50.28 ms โ 50.68 ms โ no change โ
โ QQuery 6 โ 11.77 ms โ 11.75 ms โ no change โ
โ QQuery 7 โ 93.46 ms โ 88.13 ms โ +1.06x faster โ
โ QQuery 8 โ 25.49 ms โ 25.07 ms โ no change โ
โ QQuery 9 โ 54.54 ms โ 53.28 ms โ no change โ
โ QQuery 10 โ 43.48 ms โ 42.65 ms โ no change โ
โ QQuery 11 โ 11.37 ms โ 11.35 ms โ no change โ
โ QQuery 12 โ 36.02 ms โ 34.57 ms โ no change โ
โ QQuery 13 โ 26.86 ms โ 26.67 ms โ no change โ
โ QQuery 14 โ 9.77 ms โ 9.57 ms โ no change โ
โ QQuery 15 โ 19.01 ms โ 18.98 ms โ no change โ
โ QQuery 16 โ 18.38 ms โ 18.23 ms โ no change โ
โ QQuery 17 โ 96.47 ms โ 97.63 ms โ no change โ
โ QQuery 18 โ 185.86 ms โ 201.01 ms โ 1.08x slower โ
โ QQuery 19 โ 24.92 ms โ 24.58 ms โ no change โ
โ QQuery 20 โ 31.25 ms โ 32.14 ms โ no change โ
โ QQuery 21 โ 146.24 ms โ 143.79 ms โ no change โ
โ QQuery 22 โ 14.79 ms โ 14.93 ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 1069.58ms โ
โ Total Time (support-u32-hashmap) โ 1073.22ms โ
โ Average Time (HEAD) โ 48.62ms โ
โ Average Time (support-u32-hashmap) โ 48.78ms โ
โ Queries Faster โ 1 โ
โ Queries Slower โ 1 โ
โ Queries with No Change โ 20 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโ
๐ค ./gh_compare_branch.sh Benchmark Script Running
Linux aal-dev 6.11.0-1016-gcp #16~24.04.1-Ubuntu SMP Wed May 28 02:40:52 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing support-u32-hashmap (6c1543d549bdd90603b91e8c4644b5545b8fe44e) to ebb8e9591322ee0a6fbc42cd43ce60f0e20981ba diff using: tpch_mem10
Results will be posted here when complete
๐ค: Benchmark completed
Details
Comparing HEAD and support-u32-hashmap
--------------------
Benchmark tpch_mem_sf10.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโ
โ Query โ HEAD โ support-u32-hashmap โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 1 โ FAIL โ FAIL โ incomparable โ
โ QQuery 2 โ FAIL โ FAIL โ incomparable โ
โ QQuery 3 โ FAIL โ FAIL โ incomparable โ
โ QQuery 4 โ FAIL โ FAIL โ incomparable โ
โ QQuery 5 โ FAIL โ FAIL โ incomparable โ
โ QQuery 6 โ FAIL โ FAIL โ incomparable โ
โ QQuery 7 โ FAIL โ FAIL โ incomparable โ
โ QQuery 8 โ FAIL โ FAIL โ incomparable โ
โ QQuery 9 โ FAIL โ FAIL โ incomparable โ
โ QQuery 10 โ FAIL โ FAIL โ incomparable โ
โ QQuery 11 โ FAIL โ FAIL โ incomparable โ
โ QQuery 12 โ FAIL โ FAIL โ incomparable โ
โ QQuery 13 โ FAIL โ FAIL โ incomparable โ
โ QQuery 14 โ FAIL โ FAIL โ incomparable โ
โ QQuery 15 โ FAIL โ FAIL โ incomparable โ
โ QQuery 16 โ FAIL โ FAIL โ incomparable โ
โ QQuery 17 โ FAIL โ FAIL โ incomparable โ
โ QQuery 18 โ FAIL โ FAIL โ incomparable โ
โ QQuery 19 โ FAIL โ FAIL โ incomparable โ
โ QQuery 20 โ FAIL โ FAIL โ incomparable โ
โ QQuery 21 โ FAIL โ FAIL โ incomparable โ
โ QQuery 22 โ FAIL โ FAIL โ incomparable โ
โโโโโโโโโโโโโโโโดโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 0.00ms โ
โ Total Time (support-u32-hashmap) โ 0.00ms โ
โ Average Time (HEAD) โ 0.00ms โ
โ Average Time (support-u32-hashmap) โ 0.00ms โ
โ Queries Faster โ 0 โ
โ Queries Slower โ 0 โ
โ Queries with No Change โ 0 โ
โ Queries with Failure โ 22 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโ
๐ค ./gh_compare_branch.sh Benchmark Script Running
Linux aal-dev 6.11.0-1016-gcp #16~24.04.1-Ubuntu SMP Wed May 28 02:40:52 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing support-u32-hashmap (6c1543d549bdd90603b91e8c4644b5545b8fe44e) to ebb8e9591322ee0a6fbc42cd43ce60f0e20981ba diff using: tpch_mem10
Results will be posted here when complete
๐ค: Benchmark completed
Details
Comparing HEAD and support-u32-hashmap
--------------------
Benchmark tpch_mem_sf10.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโ
โ Query โ HEAD โ support-u32-hashmap โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 1 โ FAIL โ FAIL โ incomparable โ
โ QQuery 2 โ FAIL โ FAIL โ incomparable โ
โ QQuery 3 โ FAIL โ FAIL โ incomparable โ
โ QQuery 4 โ FAIL โ FAIL โ incomparable โ
โ QQuery 5 โ FAIL โ FAIL โ incomparable โ
โ QQuery 6 โ FAIL โ FAIL โ incomparable โ
โ QQuery 7 โ FAIL โ FAIL โ incomparable โ
โ QQuery 8 โ FAIL โ FAIL โ incomparable โ
โ QQuery 9 โ FAIL โ FAIL โ incomparable โ
โ QQuery 10 โ FAIL โ FAIL โ incomparable โ
โ QQuery 11 โ FAIL โ FAIL โ incomparable โ
โ QQuery 12 โ FAIL โ FAIL โ incomparable โ
โ QQuery 13 โ FAIL โ FAIL โ incomparable โ
โ QQuery 14 โ FAIL โ FAIL โ incomparable โ
โ QQuery 15 โ FAIL โ FAIL โ incomparable โ
โ QQuery 16 โ FAIL โ FAIL โ incomparable โ
โ QQuery 17 โ FAIL โ FAIL โ incomparable โ
โ QQuery 18 โ FAIL โ FAIL โ incomparable โ
โ QQuery 19 โ FAIL โ FAIL โ incomparable โ
โ QQuery 20 โ FAIL โ FAIL โ incomparable โ
โ QQuery 21 โ FAIL โ FAIL โ incomparable โ
โ QQuery 22 โ FAIL โ FAIL โ incomparable โ
โโโโโโโโโโโโโโโโดโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 0.00ms โ
โ Total Time (support-u32-hashmap) โ 0.00ms โ
โ Average Time (HEAD) โ 0.00ms โ
โ Average Time (support-u32-hashmap) โ 0.00ms โ
โ Queries Faster โ 0 โ
โ Queries Slower โ 0 โ
โ Queries with No Change โ 0 โ
โ Queries with Failure โ 22 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโ
๐ค ./gh_compare_branch.sh Benchmark Script Running
Linux aal-dev 6.11.0-1016-gcp #16~24.04.1-Ubuntu SMP Wed May 28 02:40:52 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing support-u32-hashmap (6c1543d549bdd90603b91e8c4644b5545b8fe44e) to ebb8e9591322ee0a6fbc42cd43ce60f0e20981ba diff using: tpch_mem10
Results will be posted here when complete
๐ค ./gh_compare_branch.sh Benchmark Script Running
Linux aal-dev 6.11.0-1016-gcp #16~24.04.1-Ubuntu SMP Wed May 28 02:40:52 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing support-u32-hashmap (6c1543d549bdd90603b91e8c4644b5545b8fe44e) to ebb8e9591322ee0a6fbc42cd43ce60f0e20981ba diff using: tpch_mem clickbench_partitioned clickbench_extended
Results will be posted here when complete
๐ค: Benchmark completed
Details
Comparing HEAD and support-u32-hashmap
--------------------
Benchmark clickbench_extended.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโ
โ Query โ HEAD โ support-u32-hashmap โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 0 โ 1930.70 ms โ 1957.94 ms โ no change โ
โ QQuery 1 โ 677.21 ms โ 798.33 ms โ 1.18x slower โ
โ QQuery 2 โ 1357.45 ms โ 1481.82 ms โ 1.09x slower โ
โ QQuery 3 โ 681.52 ms โ 678.49 ms โ no change โ
โ QQuery 4 โ 1382.40 ms โ 1383.83 ms โ no change โ
โ QQuery 5 โ 15028.67 ms โ 15023.36 ms โ no change โ
โ QQuery 6 โ 2054.14 ms โ 2068.44 ms โ no change โ
โ QQuery 7 โ 1933.85 ms โ 1881.38 ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 25045.95ms โ
โ Total Time (support-u32-hashmap) โ 25273.59ms โ
โ Average Time (HEAD) โ 3130.74ms โ
โ Average Time (support-u32-hashmap) โ 3159.20ms โ
โ Queries Faster โ 0 โ
โ Queries Slower โ 2 โ
โ Queries with No Change โ 6 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
--------------------
Benchmark clickbench_partitioned.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโ
โ Query โ HEAD โ support-u32-hashmap โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 0 โ 2.21 ms โ 2.71 ms โ 1.22x slower โ
โ QQuery 1 โ 33.32 ms โ 34.20 ms โ no change โ
โ QQuery 2 โ 79.77 ms โ 80.70 ms โ no change โ
โ QQuery 3 โ 99.32 ms โ 98.22 ms โ no change โ
โ QQuery 4 โ 592.98 ms โ 588.77 ms โ no change โ
โ QQuery 5 โ 827.02 ms โ 838.44 ms โ no change โ
โ QQuery 6 โ 2.24 ms โ 2.25 ms โ no change โ
โ QQuery 7 โ 38.09 ms โ 38.69 ms โ no change โ
โ QQuery 8 โ 853.29 ms โ 853.08 ms โ no change โ
โ QQuery 9 โ 1136.14 ms โ 1152.72 ms โ no change โ
โ QQuery 10 โ 261.54 ms โ 261.42 ms โ no change โ
โ QQuery 11 โ 285.91 ms โ 293.48 ms โ no change โ
โ QQuery 12 โ 843.87 ms โ 862.33 ms โ no change โ
โ QQuery 13 โ 1263.17 ms โ 1227.42 ms โ no change โ
โ QQuery 14 โ 794.84 ms โ 811.95 ms โ no change โ
โ QQuery 15 โ 758.54 ms โ 773.98 ms โ no change โ
โ QQuery 16 โ 1625.44 ms โ 1593.33 ms โ no change โ
โ QQuery 17 โ 1583.75 ms โ 1604.20 ms โ no change โ
โ QQuery 18 โ 2820.29 ms โ 2840.30 ms โ no change โ
โ QQuery 19 โ 86.91 ms โ 84.85 ms โ no change โ
โ QQuery 20 โ 1149.21 ms โ 1149.69 ms โ no change โ
โ QQuery 21 โ 1284.54 ms โ 1308.73 ms โ no change โ
โ QQuery 22 โ 2113.86 ms โ 2149.07 ms โ no change โ
โ QQuery 23 โ 7351.12 ms โ 7555.84 ms โ no change โ
โ QQuery 24 โ 441.28 ms โ 445.38 ms โ no change โ
โ QQuery 25 โ 298.98 ms โ 310.10 ms โ no change โ
โ QQuery 26 โ 443.05 ms โ 434.69 ms โ no change โ
โ QQuery 27 โ 1540.43 ms โ 1535.79 ms โ no change โ
โ QQuery 28 โ 12749.97 ms โ 11922.38 ms โ +1.07x faster โ
โ QQuery 29 โ 539.74 ms โ 515.15 ms โ no change โ
โ QQuery 30 โ 772.49 ms โ 781.73 ms โ no change โ
โ QQuery 31 โ 788.43 ms โ 797.62 ms โ no change โ
โ QQuery 32 โ 2360.44 ms โ 2395.64 ms โ no change โ
โ QQuery 33 โ 3139.22 ms โ 3142.80 ms โ no change โ
โ QQuery 34 โ 3171.83 ms โ 3192.95 ms โ no change โ
โ QQuery 35 โ 1223.89 ms โ 1247.48 ms โ no change โ
โ QQuery 36 โ 119.12 ms โ 123.31 ms โ no change โ
โ QQuery 37 โ 51.06 ms โ 50.90 ms โ no change โ
โ QQuery 38 โ 117.58 ms โ 121.28 ms โ no change โ
โ QQuery 39 โ 192.58 ms โ 197.01 ms โ no change โ
โ QQuery 40 โ 43.25 ms โ 41.98 ms โ no change โ
โ QQuery 41 โ 39.19 ms โ 38.33 ms โ no change โ
โ QQuery 42 โ 32.36 ms โ 32.12 ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 53952.27ms โ
โ Total Time (support-u32-hashmap) โ 53533.03ms โ
โ Average Time (HEAD) โ 1254.70ms โ
โ Average Time (support-u32-hashmap) โ 1244.95ms โ
โ Queries Faster โ 1 โ
โ Queries Slower โ 1 โ
โ Queries with No Change โ 41 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
--------------------
Benchmark tpch_mem_sf1.json
--------------------
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโ
โ Query โ HEAD โ support-u32-hashmap โ Change โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ QQuery 1 โ 99.36 ms โ 97.70 ms โ no change โ
โ QQuery 2 โ 21.37 ms โ 20.73 ms โ no change โ
โ QQuery 3 โ 32.39 ms โ 32.45 ms โ no change โ
โ QQuery 4 โ 18.84 ms โ 18.05 ms โ no change โ
โ QQuery 5 โ 50.41 ms โ 50.26 ms โ no change โ
โ QQuery 6 โ 11.88 ms โ 11.61 ms โ no change โ
โ QQuery 7 โ 89.55 ms โ 84.48 ms โ +1.06x faster โ
โ QQuery 8 โ 25.58 ms โ 23.78 ms โ +1.08x faster โ
โ QQuery 9 โ 54.98 ms โ 53.07 ms โ no change โ
โ QQuery 10 โ 42.29 ms โ 42.47 ms โ no change โ
โ QQuery 11 โ 11.34 ms โ 11.28 ms โ no change โ
โ QQuery 12 โ 35.44 ms โ 35.15 ms โ no change โ
โ QQuery 13 โ 26.09 ms โ 25.54 ms โ no change โ
โ QQuery 14 โ 9.81 ms โ 9.69 ms โ no change โ
โ QQuery 15 โ 19.41 ms โ 18.82 ms โ no change โ
โ QQuery 16 โ 17.99 ms โ 17.77 ms โ no change โ
โ QQuery 17 โ 96.76 ms โ 93.99 ms โ no change โ
โ QQuery 18 โ 190.99 ms โ 189.44 ms โ no change โ
โ QQuery 19 โ 24.77 ms โ 24.99 ms โ no change โ
โ QQuery 20 โ 31.07 ms โ 31.07 ms โ no change โ
โ QQuery 21 โ 145.13 ms โ 145.34 ms โ no change โ
โ QQuery 22 โ 14.74 ms โ 14.71 ms โ no change โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโ
โ Benchmark Summary โ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Total Time (HEAD) โ 1070.19ms โ
โ Total Time (support-u32-hashmap) โ 1052.40ms โ
โ Average Time (HEAD) โ 48.65ms โ
โ Average Time (support-u32-hashmap) โ 47.84ms โ
โ Queries Faster โ 2 โ
โ Queries Slower โ 0 โ
โ Queries with No Change โ 20 โ
โ Queries with Failure โ 0 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโ
TLDR this branch looks good from my performance perspective. Thank you @jonathanc-n and @Dandandan