Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve performance of join building performance (up to 1.28x speedup) #14861

Closed
wants to merge 3 commits into from

Conversation

Dandandan
Copy link
Contributor

Which issue does this PR close?

Rationale for this change

Performance improvements for join (up to 1.28x)

--------------------
Benchmark tpch_mem_sf10.json
--------------------
┏━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query        ┃      main ┃ join_vectorization3 ┃        Change ┃
┡━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1     │  770.46ms │            796.52ms │     no change │
│ QQuery 2     │  125.30ms │            106.59ms │ +1.18x faster │
│ QQuery 3     │  259.14ms │            220.22ms │ +1.18x faster │
│ QQuery 4     │  134.04ms │            122.23ms │ +1.10x faster │
│ QQuery 5     │  525.49ms │            456.57ms │ +1.15x faster │
│ QQuery 6     │   45.93ms │             42.05ms │ +1.09x faster │
│ QQuery 7     │ 1079.09ms │            905.24ms │ +1.19x faster │
│ QQuery 8     │  336.17ms │            296.16ms │ +1.14x faster │
│ QQuery 9     │  881.10ms │            687.21ms │ +1.28x faster │
│ QQuery 10    │  406.44ms │            353.14ms │ +1.15x faster │
│ QQuery 11    │   94.73ms │             82.00ms │ +1.16x faster │
│ QQuery 12    │  280.55ms │            250.40ms │ +1.12x faster │
│ QQuery 13    │  292.29ms │            256.12ms │ +1.14x faster │
│ QQuery 14    │   47.03ms │             43.25ms │ +1.09x faster │
│ QQuery 15    │  137.05ms │            117.04ms │ +1.17x faster │
│ QQuery 16    │   94.72ms │             82.67ms │ +1.15x faster │
│ QQuery 17    │  910.07ms │            717.32ms │ +1.27x faster │
│ QQuery 18    │ 3759.48ms │           3025.62ms │ +1.24x faster │
│ QQuery 19    │  183.15ms │            167.47ms │ +1.09x faster │
│ QQuery 20    │  242.99ms │            195.70ms │ +1.24x faster │
│ QQuery 21    │ 1582.68ms │           1292.53ms │ +1.22x faster │
│ QQuery 22    │   95.75ms │             97.61ms │     no change │
└──────────────┴───────────┴─────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                  ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (main)                  │ 12283.64ms │
│ Total Time (join_vectorization3)   │ 10313.65ms │
│ Average Time (main)                │   558.35ms │
│ Average Time (join_vectorization3) │   468.80ms │
│ Queries Faster                     │         20 │
│ Queries Slower                     │          0 │
│ Queries with No Change             │          2 │
└────────────────────────────────────┴────────────┘
Note: Skipping /Users/danielheres/Code/arrow-datafusion-personal/benchmarks/results/main/tpch_sf1.json as /Users/danielheres/Code/arrow-datafusion-personal/benchmarks/results/join_vectorization3/tpch_sf1.json does not exist
--------------------
Benchmark tpch_sf10.json
--------------------
┏━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query        ┃      main ┃ join_vectorization3 ┃        Change ┃
┡━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1     │  981.31ms │            946.03ms │     no change │
│ QQuery 2     │  157.88ms │            144.81ms │ +1.09x faster │
│ QQuery 3     │  475.15ms │            409.54ms │ +1.16x faster │
│ QQuery 4     │  240.46ms │            219.94ms │ +1.09x faster │
│ QQuery 5     │  700.03ms │            604.97ms │ +1.16x faster │
│ QQuery 6     │  157.46ms │            149.52ms │ +1.05x faster │
│ QQuery 7     │ 1072.19ms │            881.00ms │ +1.22x faster │
│ QQuery 8     │  740.30ms │            663.77ms │ +1.12x faster │
│ QQuery 9     │ 1189.08ms │            984.28ms │ +1.21x faster │
│ QQuery 10    │  666.24ms │            605.10ms │ +1.10x faster │
│ QQuery 11    │  101.91ms │             98.58ms │     no change │
│ QQuery 12    │  338.89ms │            317.19ms │ +1.07x faster │
│ QQuery 13    │  475.00ms │            418.44ms │ +1.14x faster │
│ QQuery 14    │  266.15ms │            245.19ms │ +1.09x faster │
│ QQuery 15    │  442.98ms │            403.32ms │ +1.10x faster │
│ QQuery 16    │  111.29ms │            107.48ms │     no change │
│ QQuery 17    │ 1249.82ms │           1031.22ms │ +1.21x faster │
│ QQuery 18    │ 2052.52ms │           1672.16ms │ +1.23x faster │
│ QQuery 19    │  464.19ms │            437.39ms │ +1.06x faster │
│ QQuery 20    │  470.89ms │            391.63ms │ +1.20x faster │
│ QQuery 21    │ 1637.42ms │           1390.00ms │ +1.18x faster │
│ QQuery 22    │  156.41ms │            148.43ms │ +1.05x faster │
└──────────────┴───────────┴─────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                  ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (main)                  │ 14147.60ms │
│ Total Time (join_vectorization3)   │ 12269.98ms │
│ Average Time (main)                │   643.07ms │
│ Average Time (join_vectorization3) │   557.73ms │
│ Queries Faster                     │         19 │
│ Queries Slower                     │          0 │
│ Queries with No Change             │          3 │
└────────────────────────────────────┴────────────┘
--------------------
Benchmark imdb.json
--------------------
┏━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query        ┃       main ┃ join_vectorization3 ┃        Change ┃
┡━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1     │   149.85ms │            148.22ms │     no change │
│ QQuery 2     │   136.92ms │            131.45ms │     no change │
│ QQuery 3     │   125.27ms │            120.79ms │     no change │
│ QQuery 4     │   147.59ms │            142.85ms │     no change │
│ QQuery 5     │   133.49ms │            131.44ms │     no change │
│ QQuery 6     │   133.86ms │            130.59ms │     no change │
│ QQuery 7     │   130.06ms │            126.92ms │     no change │
│ QQuery 8     │   157.57ms │            153.21ms │     no change │
│ QQuery 9     │   330.48ms │            310.30ms │ +1.07x faster │
│ QQuery 10    │   302.07ms │            287.54ms │     no change │
│ QQuery 11    │   345.51ms │            324.52ms │ +1.06x faster │
│ QQuery 12    │   155.70ms │            154.86ms │     no change │
│ QQuery 13    │   127.21ms │            121.70ms │     no change │
│ QQuery 14    │   175.11ms │            168.47ms │     no change │
│ QQuery 15    │   358.09ms │            338.29ms │ +1.06x faster │
│ QQuery 16    │   334.79ms │            319.46ms │     no change │
│ QQuery 17    │   363.18ms │            354.54ms │     no change │
│ QQuery 18    │  1019.79ms │            896.34ms │ +1.14x faster │
│ QQuery 19    │  1016.77ms │            889.07ms │ +1.14x faster │
│ QQuery 20    │  1006.47ms │            884.71ms │ +1.14x faster │
│ QQuery 21    │  1050.26ms │            910.27ms │ +1.15x faster │
│ QQuery 22    │  1058.43ms │            912.95ms │ +1.16x faster │
│ QQuery 23    │  1083.64ms │            952.50ms │ +1.14x faster │
│ QQuery 24    │   371.51ms │            358.17ms │     no change │
│ QQuery 25    │   350.55ms │            331.59ms │ +1.06x faster │
│ QQuery 26    │   583.38ms │            538.76ms │ +1.08x faster │
│ QQuery 27    │   447.37ms │            420.43ms │ +1.06x faster │
│ QQuery 28    │   434.70ms │            414.50ms │     no change │
│ QQuery 29    │  2275.92ms │           1952.21ms │ +1.17x faster │
│ QQuery 30    │  2260.42ms │           1905.78ms │ +1.19x faster │
│ QQuery 31    │   612.31ms │            578.03ms │ +1.06x faster │
│ QQuery 32    │   598.80ms │            555.51ms │ +1.08x faster │
│ QQuery 33    │   596.25ms │            562.23ms │ +1.06x faster │
│ QQuery 34    │   623.42ms │            574.82ms │ +1.08x faster │
│ QQuery 35    │   387.53ms │            367.13ms │ +1.06x faster │
│ QQuery 36    │   360.08ms │            339.32ms │ +1.06x faster │
│ QQuery 37    │   380.44ms │            356.98ms │ +1.07x faster │
│ QQuery 38    │   180.95ms │            177.24ms │     no change │
│ QQuery 39    │   176.33ms │            169.45ms │     no change │
│ QQuery 40    │   191.42ms │            185.27ms │     no change │
│ QQuery 41    │   353.06ms │            338.22ms │     no change │
│ QQuery 42    │   394.40ms │            372.09ms │ +1.06x faster │
│ QQuery 43    │   538.76ms │            484.88ms │ +1.11x faster │
│ QQuery 44    │   425.86ms │            402.68ms │ +1.06x faster │
│ QQuery 45    │   468.02ms │            420.05ms │ +1.11x faster │
│ QQuery 46    │   331.92ms │            306.86ms │ +1.08x faster │
│ QQuery 47    │   313.79ms │            288.46ms │ +1.09x faster │
│ QQuery 48    │   345.90ms │            309.51ms │ +1.12x faster │
│ QQuery 49    │   417.44ms │            380.29ms │ +1.10x faster │
│ QQuery 50    │   428.61ms │            403.89ms │ +1.06x faster │
│ QQuery 51    │   425.18ms │            397.25ms │ +1.07x faster │
│ QQuery 52    │   442.29ms │            419.55ms │ +1.05x faster │
│ QQuery 53    │   458.08ms │            425.64ms │ +1.08x faster │
│ QQuery 54    │   438.69ms │            416.33ms │ +1.05x faster │
│ QQuery 55    │   254.45ms │            242.23ms │     no change │
│ QQuery 56    │  5755.89ms │           5609.35ms │     no change │
│ QQuery 57    │  5914.70ms │           5716.57ms │     no change │
│ QQuery 58    │  5836.40ms │           5632.27ms │     no change │
│ QQuery 59    │  5841.59ms │           5692.81ms │     no change │
│ QQuery 60    │  3159.28ms │           3079.91ms │     no change │
│ QQuery 61    │ 11504.74ms │          11619.00ms │     no change │
│ QQuery 62    │ 11482.88ms │          11621.92ms │     no change │
│ QQuery 63    │ 11234.35ms │          11651.58ms │     no change │
│ QQuery 64    │  3322.17ms │           3163.43ms │     no change │
│ QQuery 65    │ 11085.44ms │          11618.38ms │     no change │
│ QQuery 66    │   816.84ms │            758.97ms │ +1.08x faster │
│ QQuery 67    │   519.03ms │            499.85ms │     no change │
│ QQuery 68    │   534.01ms │            503.78ms │ +1.06x faster │
│ QQuery 69    │   699.04ms │            680.00ms │     no change │
│ QQuery 70    │   726.62ms │            700.03ms │     no change │
│ QQuery 71    │   695.35ms │            681.37ms │     no change │
│ QQuery 72    │   780.53ms │            769.72ms │     no change │
│ QQuery 73    │   489.92ms │            465.32ms │ +1.05x faster │
│ QQuery 74    │   530.91ms │            511.81ms │     no change │
│ QQuery 75    │   492.28ms │            473.04ms │     no change │
│ QQuery 76    │   400.48ms │            392.25ms │     no change │
│ QQuery 77    │   391.98ms │            378.46ms │     no change │
│ QQuery 78    │   418.67ms │            416.60ms │     no change │
│ QQuery 79    │   521.48ms │            484.52ms │ +1.08x faster │
│ QQuery 80    │   523.58ms │            487.64ms │ +1.07x faster │
│ QQuery 81    │   528.93ms │            508.36ms │     no change │
│ QQuery 82    │   553.78ms │            523.87ms │ +1.06x faster │
│ QQuery 83    │   404.36ms │            405.18ms │     no change │
│ QQuery 84    │   406.64ms │            387.79ms │     no change │
│ QQuery 85    │   412.55ms │            410.23ms │     no change │
│ QQuery 86    │   820.98ms │            791.09ms │     no change │
│ QQuery 87    │   790.98ms │            747.84ms │ +1.06x faster │
│ QQuery 88    │   632.28ms │            584.86ms │ +1.08x faster │
│ QQuery 89    │   610.47ms │            567.37ms │ +1.08x faster │
│ QQuery 90    │   642.27ms │            629.10ms │     no change │
│ QQuery 91    │   543.64ms │            524.93ms │     no change │
│ QQuery 92    │   482.56ms │            454.32ms │ +1.06x faster │
│ QQuery 93    │   491.41ms │            482.90ms │     no change │
│ QQuery 94    │   400.96ms │            394.93ms │     no change │
│ QQuery 95    │   384.96ms │            378.74ms │     no change │
│ QQuery 96    │   420.97ms │            418.68ms │     no change │
│ QQuery 97    │   495.91ms │            504.26ms │     no change │
│ QQuery 98    │   464.67ms │            470.29ms │     no change │
│ QQuery 99    │   497.43ms │            516.38ms │     no change │
│ QQuery 100   │   730.44ms │            705.92ms │     no change │
│ QQuery 101   │   726.98ms │            712.71ms │     no change │
│ QQuery 102   │   898.02ms │            893.37ms │     no change │
│ QQuery 103   │   609.41ms │            619.56ms │     no change │
│ QQuery 104   │   609.33ms │            615.33ms │     no change │
│ QQuery 105   │   625.37ms │            622.44ms │     no change │
│ QQuery 106   │   633.90ms │            647.53ms │     no change │
│ QQuery 107   │   653.90ms │            663.01ms │     no change │
│ QQuery 108   │   673.28ms │            663.36ms │     no change │
│ QQuery 109   │   184.69ms │            186.29ms │     no change │
│ QQuery 110   │   188.07ms │            186.59ms │     no change │
│ QQuery 111   │   373.25ms │            355.84ms │     no change │
│ QQuery 112   │   320.89ms │            318.91ms │     no change │
│ QQuery 113   │   391.75ms │            375.21ms │     no change │
└──────────────┴────────────┴─────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓
┃ Benchmark Summary                  ┃             ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩
│ Total Time (main)                  │ 127993.11ms │
│ Total Time (join_vectorization3)   │ 125182.08ms │
│ Average Time (main)                │   1132.68ms │
│ Average Time (join_vectorization3) │   1107.81ms │
│ Queries Faster                     │          44 │
│ Queries Slower                     │           0 │
│ Queries with No Change             │          69 │
└────────────────────────────────────┴─────────────┘

What changes are included in this PR?

Are these changes tested?

Are there any user-facing changes?

@github-actions github-actions bot added the physical-expr Physical Expressions label Feb 24, 2025
@Dandandan Dandandan closed this Feb 24, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
physical-expr Physical Expressions
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Improve join building performance
1 participant