Rachelint commented on PR #11943: URL: https://github.com/apache/datafusion/pull/11943#issuecomment-2295096096
@alamb @jayzhan211 @2010YOUY01 I have finish the blocked version common accumulators(avg, count, prim_op`) yesterday, and pass all tests now. Following is the benchmark result. It can make some queries(especially in clickbench) faster 1.1x~1.2x. However, some queries are slightly slower (like q1 in tpch_mem), because in q1, the dataset is too small with only one block, and the indexed op in `VecDeque` is a bit more expansive than the original `Vec`. I am trying to solve this slightly slower now. ``` -------------------- Benchmark clickbench_1.json -------------------- ┏━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ ┃ Query ┃ main ┃ sketch-blocked-aggr-state-management ┃ Change ┃ ┡━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ │ QQuery 0 │ 0.72ms │ 0.70ms │ no change │ │ QQuery 1 │ 67.71ms │ 70.46ms │ no change │ │ QQuery 2 │ 169.92ms │ 172.21ms │ no change │ │ QQuery 3 │ 185.76ms │ 184.55ms │ no change │ │ QQuery 4 │ 1623.50ms │ 1634.12ms │ no change │ │ QQuery 5 │ 1603.76ms │ 1615.76ms │ no change │ │ QQuery 6 │ 61.56ms │ 62.08ms │ no change │ │ QQuery 7 │ 67.97ms │ 70.22ms │ no change │ │ QQuery 8 │ 2332.37ms │ 2403.19ms │ no change │ │ QQuery 9 │ 1952.18ms │ 2089.41ms │ 1.07x slower │ │ QQuery 10 │ 551.12ms │ 568.32ms │ no change │ │ QQuery 11 │ 606.73ms │ 621.15ms │ no change │ │ QQuery 12 │ 1822.70ms │ 1817.46ms │ no change │ │ QQuery 13 │ 3414.56ms │ 3423.80ms │ no change │ │ QQuery 14 │ 2595.05ms │ 2301.80ms │ +1.13x faster │ │ QQuery 15 │ 1836.69ms │ 1848.67ms │ no change │ │ QQuery 16 │ 5056.23ms │ 4411.53ms │ +1.15x faster │ │ QQuery 17 │ 4903.18ms │ 4210.94ms │ +1.16x faster │ │ QQuery 18 │ 10383.16ms │ 8553.34ms │ +1.21x faster │ │ QQuery 19 │ 152.06ms │ 152.12ms │ no change │ │ QQuery 20 │ 3364.93ms │ 3375.95ms │ no change │ │ QQuery 21 │ 3972.92ms │ 3975.31ms │ no change │ │ QQuery 22 │ 9594.65ms │ 9604.53ms │ no change │ │ QQuery 23 │ 23807.10ms │ 24247.29ms │ no change │ │ QQuery 24 │ 1163.30ms │ 1177.67ms │ no change │ │ QQuery 25 │ 1055.71ms │ 1064.33ms │ no change │ │ QQuery 26 │ 1366.61ms │ 1373.03ms │ no change │ │ QQuery 27 │ 4821.72ms │ 4903.21ms │ no change │ │ QQuery 28 │ 23710.55ms │ 24660.36ms │ no change │ │ QQuery 29 │ 910.31ms │ 925.10ms │ no change │ │ QQuery 30 │ 2092.15ms │ 2018.14ms │ no change │ │ QQuery 31 │ 2328.77ms │ 2164.04ms │ +1.08x faster │ │ QQuery 32 │ 8687.27ms │ 7025.87ms │ +1.24x faster │ │ QQuery 33 │ 9701.59ms │ 9752.08ms │ no change │ │ QQuery 34 │ 9628.66ms │ 9632.10ms │ no change │ │ QQuery 35 │ 3116.66ms │ 2815.94ms │ +1.11x faster │ │ QQuery 36 │ 261.19ms │ 261.67ms │ no change │ │ QQuery 37 │ 173.76ms │ 174.59ms │ no change │ │ QQuery 38 │ 162.87ms │ 156.41ms │ no change │ │ QQuery 39 │ 855.42ms │ 685.48ms │ +1.25x faster │ │ QQuery 40 │ 62.04ms │ 63.56ms │ no change │ │ QQuery 41 │ 57.62ms │ 57.32ms │ no change │ │ QQuery 42 │ 72.14ms │ 70.63ms │ no change │ └──────────────┴────────────┴──────────────────────────────────────┴───────────────┘ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓ ┃ Benchmark Summary ┃ ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩ │ Total Time (main) │ 150354.87ms │ │ Total Time (sketch-blocked-aggr-state-management) │ 146396.43ms │ │ Average Time (main) │ 3496.62ms │ │ Average Time (sketch-blocked-aggr-state-management) │ 3404.57ms │ │ Queries Faster │ 8 │ │ Queries Slower │ 1 │ │ Queries with No Change │ 34 │ └─────────────────────────────────────────────────────┴─────────────┘ -------------------- Benchmark clickbench_partitioned.json -------------------- ┏━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ ┃ Query ┃ main ┃ sketch-blocked-aggr-state-management ┃ Change ┃ ┡━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ │ QQuery 0 │ 2.03ms │ 2.12ms │ no change │ │ QQuery 1 │ 57.64ms │ 57.69ms │ no change │ │ QQuery 2 │ 154.25ms │ 155.66ms │ no change │ │ QQuery 3 │ 167.63ms │ 164.62ms │ no change │ │ QQuery 4 │ 1672.39ms │ 1666.01ms │ no change │ │ QQuery 5 │ 1510.56ms │ 1535.02ms │ no change │ │ QQuery 6 │ 50.93ms │ 49.05ms │ no change │ │ QQuery 7 │ 58.24ms │ 67.36ms │ 1.16x slower │ │ QQuery 8 │ 2390.67ms │ 2422.91ms │ no change │ │ QQuery 9 │ 1931.85ms │ 2034.83ms │ 1.05x slower │ │ QQuery 10 │ 533.01ms │ 547.14ms │ no change │ │ QQuery 11 │ 586.52ms │ 623.34ms │ 1.06x slower │ │ QQuery 12 │ 1702.88ms │ 1717.49ms │ no change │ │ QQuery 13 │ 3282.15ms │ 3311.41ms │ no change │ │ QQuery 14 │ 2462.18ms │ 2201.31ms │ +1.12x faster │ │ QQuery 15 │ 1866.22ms │ 1855.67ms │ no change │ │ QQuery 16 │ 4925.49ms │ 4335.33ms │ +1.14x faster │ │ QQuery 17 │ 4805.47ms │ 4062.71ms │ +1.18x faster │ │ QQuery 18 │ 9854.37ms │ 8158.08ms │ +1.21x faster │ │ QQuery 19 │ 141.73ms │ 139.37ms │ no change │ │ QQuery 20 │ 3663.83ms │ 3646.12ms │ no change │ │ QQuery 21 │ 4188.63ms │ 4213.78ms │ no change │ │ QQuery 22 │ 9622.93ms │ 9658.20ms │ no change │ │ QQuery 23 │ 21982.07ms │ 21865.34ms │ no change │ │ QQuery 24 │ 1063.25ms │ 1066.82ms │ no change │ │ QQuery 25 │ 853.54ms │ 856.04ms │ no change │ │ QQuery 26 │ 1238.92ms │ 1248.70ms │ no change │ │ QQuery 27 │ 5148.86ms │ 5210.08ms │ no change │ │ QQuery 28 │ 22077.36ms │ 22844.09ms │ no change │ │ QQuery 29 │ 835.61ms │ 859.70ms │ no change │ │ QQuery 30 │ 2009.91ms │ 1918.45ms │ no change │ │ QQuery 31 │ 2223.99ms │ 2075.68ms │ +1.07x faster │ │ QQuery 32 │ 8526.46ms │ 6935.86ms │ +1.23x faster │ │ QQuery 33 │ 9774.11ms │ 9698.49ms │ no change │ │ QQuery 34 │ 9496.05ms │ 9616.92ms │ no change │ │ QQuery 35 │ 3134.31ms │ 2837.62ms │ +1.10x faster │ │ QQuery 36 │ 240.50ms │ 249.92ms │ no change │ │ QQuery 37 │ 111.59ms │ 108.84ms │ no change │ │ QQuery 38 │ 137.54ms │ 139.93ms │ no change │ │ QQuery 39 │ 807.76ms │ 664.32ms │ +1.22x faster │ │ QQuery 40 │ 52.18ms │ 52.88ms │ no change │ │ QQuery 41 │ 46.33ms │ 47.74ms │ no change │ │ QQuery 42 │ 61.40ms │ 60.95ms │ no change │ └──────────────┴────────────┴──────────────────────────────────────┴───────────────┘ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓ ┃ Benchmark Summary ┃ ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩ │ Total Time (main) │ 145453.36ms │ │ Total Time (sketch-blocked-aggr-state-management) │ 140983.62ms │ │ Average Time (main) │ 3382.64ms │ │ Average Time (sketch-blocked-aggr-state-management) │ 3278.69ms │ │ Queries Faster │ 8 │ │ Queries Slower │ 3 │ │ Queries with No Change │ 32 │ └─────────────────────────────────────────────────────┴─────────────┘ Note: Skipping /home/db/datafusion/benchmarks/results/main/clickbench_partitioned.json.bak as /home/db/datafusion/benchmarks/results/sketch-blocked-aggr-state-management/clickbench_partitioned.json.bak does not exist -------------------- Benchmark tpch_mem_sf1.json -------------------- ┏━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ ┃ Query ┃ main ┃ sketch-blocked-aggr-state-management ┃ Change ┃ ┡━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ │ QQuery 1 │ 207.92ms │ 223.10ms │ 1.07x slower │ │ QQuery 2 │ 31.29ms │ 32.18ms │ no change │ │ QQuery 3 │ 83.78ms │ 83.60ms │ no change │ │ QQuery 4 │ 58.56ms │ 59.37ms │ no change │ │ QQuery 5 │ 121.47ms │ 124.23ms │ no change │ │ QQuery 6 │ 12.64ms │ 12.70ms │ no change │ │ QQuery 7 │ 250.70ms │ 254.14ms │ no change │ │ QQuery 8 │ 32.10ms │ 26.25ms │ +1.22x faster │ │ QQuery 9 │ 117.87ms │ 118.84ms │ no change │ │ QQuery 10 │ 116.73ms │ 115.16ms │ no change │ │ QQuery 11 │ 56.63ms │ 57.57ms │ no change │ │ QQuery 12 │ 35.72ms │ 35.47ms │ no change │ │ QQuery 13 │ 76.44ms │ 76.97ms │ no change │ │ QQuery 14 │ 15.08ms │ 14.90ms │ no change │ │ QQuery 15 │ 24.27ms │ 23.97ms │ no change │ │ QQuery 16 │ 36.52ms │ 36.32ms │ no change │ │ QQuery 17 │ 171.41ms │ 180.99ms │ 1.06x slower │ │ QQuery 18 │ 493.03ms │ 493.05ms │ no change │ │ QQuery 19 │ 35.46ms │ 35.43ms │ no change │ │ QQuery 20 │ 80.46ms │ 69.27ms │ +1.16x faster │ │ QQuery 21 │ 287.92ms │ 287.08ms │ no change │ │ QQuery 22 │ 19.67ms │ 19.52ms │ no change │ └──────────────┴──────────┴──────────────────────────────────────┴───────────────┘ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓ ┃ Benchmark Summary ┃ ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩ │ Total Time (main) │ 2365.68ms │ │ Total Time (sketch-blocked-aggr-state-management) │ 2380.12ms │ │ Average Time (main) │ 107.53ms │ │ Average Time (sketch-blocked-aggr-state-management) │ 108.19ms │ │ Queries Faster │ 2 │ │ Queries Slower │ 2 │ │ Queries with No Change │ 18 │ └─────────────────────────────────────────────────────┴───────────┘ Note: Skipping /home/db/datafusion/benchmarks/results/main/tpch_sf10.json as /home/db/datafusion/benchmarks/results/sketch-blocked-aggr-state-management/tpch_sf10.json does not exist -------------------- Benchmark tpch_sf1.json -------------------- ┏━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ ┃ Query ┃ main ┃ sketch-blocked-aggr-state-management ┃ Change ┃ ┡━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ │ QQuery 1 │ 291.46ms │ 296.78ms │ no change │ │ QQuery 2 │ 44.78ms │ 44.48ms │ no change │ │ QQuery 3 │ 109.87ms │ 113.13ms │ no change │ │ QQuery 4 │ 60.18ms │ 59.74ms │ no change │ │ QQuery 5 │ 196.33ms │ 195.53ms │ no change │ │ QQuery 6 │ 57.52ms │ 58.87ms │ no change │ │ QQuery 7 │ 305.37ms │ 306.28ms │ no change │ │ QQuery 8 │ 124.96ms │ 125.08ms │ no change │ │ QQuery 9 │ 226.72ms │ 231.79ms │ no change │ │ QQuery 10 │ 196.97ms │ 193.47ms │ no change │ │ QQuery 11 │ 32.67ms │ 37.54ms │ 1.15x slower │ │ QQuery 12 │ 85.23ms │ 80.11ms │ +1.06x faster │ │ QQuery 13 │ 128.19ms │ 127.57ms │ no change │ │ QQuery 14 │ 78.30ms │ 78.45ms │ no change │ │ QQuery 15 │ 107.56ms │ 109.34ms │ no change │ │ QQuery 16 │ 42.01ms │ 42.85ms │ no change │ │ QQuery 17 │ 274.14ms │ 284.20ms │ no change │ │ QQuery 18 │ 453.89ms │ 456.47ms │ no change │ │ QQuery 19 │ 141.27ms │ 141.08ms │ no change │ │ QQuery 20 │ 134.95ms │ 121.77ms │ +1.11x faster │ │ QQuery 21 │ 295.07ms │ 298.69ms │ no change │ │ QQuery 22 │ 25.33ms │ 27.91ms │ 1.10x slower │ └──────────────┴──────────┴──────────────────────────────────────┴───────────────┘ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓ ┃ Benchmark Summary ┃ ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩ │ Total Time (main) │ 3412.78ms │ │ Total Time (sketch-blocked-aggr-state-management) │ 3431.13ms │ │ Average Time (main) │ 155.13ms │ │ Average Time (sketch-blocked-aggr-state-management) │ 155.96ms │ │ Queries Faster │ 2 │ │ Queries Slower │ 2 │ │ Queries with No Change │ 18 │ └─────────────────────────────────────────────────────┴───────────┘ ``` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org For additional commands, e-mail: github-h...@datafusion.apache.org