Commit 3deeadd
authored
perf: strength reduce hash partition modulo (up to 1.16x faster) (#21900)
## Which issue does this PR close?
- Closes #21843.
## Rationale for this change
Performance improvement on large hash-repartitions.
TPC-H at bigger scale factor shows biggest benefit:
<details>
```
--------------------
Benchmark tpch_sf10.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query ┃ HEAD ┃ perf-strength-reduce-hash-partition ┃ Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1 │ 327.64 / 329.66 ±1.44 / 331.84 ms │ 327.82 / 330.00 ±1.68 / 331.48 ms │ no change │
│ QQuery 2 │ 131.35 / 138.32 ±3.91 / 143.24 ms │ 125.94 / 126.49 ±0.61 / 127.42 ms │ +1.09x faster │
│ QQuery 3 │ 286.47 / 300.24 ±8.19 / 308.99 ms │ 273.76 / 276.01 ±1.80 / 277.98 ms │ +1.09x faster │
│ QQuery 4 │ 158.30 / 160.81 ±2.21 / 163.54 ms │ 137.56 / 138.79 ±0.98 / 139.80 ms │ +1.16x faster │
│ QQuery 5 │ 428.90 / 437.68 ±4.45 / 440.83 ms │ 390.52 / 396.51 ±4.30 / 403.67 ms │ +1.10x faster │
│ QQuery 6 │ 131.88 / 132.83 ±1.17 / 134.81 ms │ 133.06 / 134.70 ±1.22 / 135.83 ms │ no change │
│ QQuery 7 │ 541.09 / 545.88 ±4.21 / 552.67 ms │ 508.51 / 531.75 ±16.82 / 548.21 ms │ no change │
│ QQuery 8 │ 467.86 / 476.44 ±6.95 / 483.87 ms │ 427.19 / 439.03 ±9.88 / 453.56 ms │ +1.09x faster │
│ QQuery 9 │ 649.16 / 660.07 ±10.12 / 676.72 ms │ 605.25 / 611.87 ±5.72 / 620.70 ms │ +1.08x faster │
│ QQuery 10 │ 327.64 / 339.90 ±6.92 / 348.85 ms │ 321.66 / 330.67 ±4.76 / 334.89 ms │ no change │
│ QQuery 11 │ 104.93 / 107.54 ±1.71 / 110.18 ms │ 92.80 / 101.35 ±12.27 / 125.63 ms │ +1.06x faster │
│ QQuery 12 │ 198.96 / 202.37 ±2.45 / 206.21 ms │ 195.07 / 197.77 ±4.26 / 206.26 ms │ no change │
│ QQuery 13 │ 300.44 / 312.37 ±6.87 / 321.90 ms │ 291.85 / 308.47 ±10.23 / 317.55 ms │ no change │
│ QQuery 14 │ 188.06 / 193.71 ±4.81 / 200.69 ms │ 182.89 / 186.72 ±3.67 / 192.75 ms │ no change │
│ QQuery 15 │ 334.88 / 339.95 ±5.81 / 350.78 ms │ 330.79 / 336.21 ±4.31 / 342.71 ms │ no change │
│ QQuery 16 │ 78.38 / 81.25 ±2.51 / 84.55 ms │ 74.35 / 76.61 ±2.80 / 81.94 ms │ +1.06x faster │
│ QQuery 17 │ 744.08 / 761.70 ±12.84 / 781.69 ms │ 703.40 / 724.66 ±23.35 / 770.05 ms │ no change │
│ QQuery 18 │ 760.17 / 782.23 ±12.12 / 796.85 ms │ 725.45 / 744.71 ±15.59 / 765.59 ms │ no change │
│ QQuery 19 │ 267.90 / 280.99 ±14.61 / 306.80 ms │ 275.58 / 298.23 ±27.69 / 351.75 ms │ 1.06x slower │
│ QQuery 20 │ 311.46 / 323.12 ±10.13 / 341.26 ms │ 312.13 / 319.42 ±4.39 / 324.46 ms │ no change │
│ QQuery 21 │ 816.40 / 837.33 ±19.78 / 870.18 ms │ 766.23 / 778.58 ±8.98 / 792.31 ms │ +1.08x faster │
│ QQuery 22 │ 81.46 / 84.94 ±2.58 / 88.20 ms │ 75.31 / 77.73 ±1.39 / 79.55 ms │ +1.09x faster │
└───────────┴────────────────────────────────────┴─────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary ┃ ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD) │ 7829.34ms │
│ Total Time (perf-strength-reduce-hash-partition) │ 7466.29ms │
│ Average Time (HEAD) │ 355.88ms │
│ Average Time (perf-strength-reduce-hash-partition) │ 339.38ms │
│ Queries Faster │ 10 │
│ Queries Slower │ 1 │
│ Queries with No Change │ 11 │
│ Queries with Failure │ 0 │
└────────────────────────────────────────────────────┴───────────┘
```
</details>
## What changes are included in this PR?
Use strength-reduce to speed up hash % partition
## Are these changes tested?
Existing tests
## Are there any user-facing changes?
A small change to `new_hash_partitioner` to return a `Result` instead of
panic during runtime1 parent 1364286 commit 3deeadd
1 file changed
Lines changed: 187 additions & 17 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
424 | 424 | | |
425 | 425 | | |
426 | 426 | | |
427 | | - | |
| 427 | + | |
428 | 428 | | |
429 | 429 | | |
430 | 430 | | |
| |||
438 | 438 | | |
439 | 439 | | |
440 | 440 | | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
441 | 513 | | |
442 | 514 | | |
443 | 515 | | |
| |||
446 | 518 | | |
447 | 519 | | |
448 | 520 | | |
449 | | - | |
450 | | - | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
451 | 526 | | |
452 | 527 | | |
453 | 528 | | |
454 | 529 | | |
455 | | - | |
456 | | - | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
457 | 536 | | |
458 | 537 | | |
459 | | - | |
| 538 | + | |
460 | 539 | | |
461 | 540 | | |
462 | 541 | | |
463 | 542 | | |
464 | | - | |
| 543 | + | |
465 | 544 | | |
466 | 545 | | |
467 | 546 | | |
| |||
501 | 580 | | |
502 | 581 | | |
503 | 582 | | |
504 | | - | |
| 583 | + | |
| 584 | + | |
505 | 585 | | |
506 | 586 | | |
507 | 587 | | |
| |||
510 | 590 | | |
511 | 591 | | |
512 | 592 | | |
513 | | - | |
| 593 | + | |
514 | 594 | | |
515 | 595 | | |
516 | 596 | | |
| |||
575 | 655 | | |
576 | 656 | | |
577 | 657 | | |
578 | | - | |
| 658 | + | |
579 | 659 | | |
580 | 660 | | |
581 | 661 | | |
| |||
596 | 676 | | |
597 | 677 | | |
598 | 678 | | |
599 | | - | |
600 | | - | |
601 | | - | |
| 679 | + | |
602 | 680 | | |
603 | 681 | | |
604 | 682 | | |
| |||
653 | 731 | | |
654 | 732 | | |
655 | 733 | | |
656 | | - | |
657 | | - | |
658 | | - | |
| 734 | + | |
| 735 | + | |
| 736 | + | |
659 | 737 | | |
660 | 738 | | |
661 | 739 | | |
| |||
1359 | 1437 | | |
1360 | 1438 | | |
1361 | 1439 | | |
1362 | | - | |
| 1440 | + | |
1363 | 1441 | | |
1364 | 1442 | | |
1365 | 1443 | | |
| |||
1783 | 1861 | | |
1784 | 1862 | | |
1785 | 1863 | | |
| 1864 | + | |
| 1865 | + | |
| 1866 | + | |
| 1867 | + | |
| 1868 | + | |
| 1869 | + | |
| 1870 | + | |
| 1871 | + | |
| 1872 | + | |
| 1873 | + | |
| 1874 | + | |
| 1875 | + | |
| 1876 | + | |
| 1877 | + | |
| 1878 | + | |
| 1879 | + | |
| 1880 | + | |
| 1881 | + | |
| 1882 | + | |
| 1883 | + | |
| 1884 | + | |
| 1885 | + | |
| 1886 | + | |
| 1887 | + | |
| 1888 | + | |
| 1889 | + | |
| 1890 | + | |
| 1891 | + | |
| 1892 | + | |
| 1893 | + | |
| 1894 | + | |
| 1895 | + | |
| 1896 | + | |
| 1897 | + | |
| 1898 | + | |
| 1899 | + | |
| 1900 | + | |
| 1901 | + | |
| 1902 | + | |
| 1903 | + | |
| 1904 | + | |
| 1905 | + | |
| 1906 | + | |
| 1907 | + | |
| 1908 | + | |
| 1909 | + | |
| 1910 | + | |
| 1911 | + | |
| 1912 | + | |
| 1913 | + | |
| 1914 | + | |
| 1915 | + | |
| 1916 | + | |
| 1917 | + | |
| 1918 | + | |
| 1919 | + | |
| 1920 | + | |
| 1921 | + | |
| 1922 | + | |
| 1923 | + | |
| 1924 | + | |
| 1925 | + | |
| 1926 | + | |
| 1927 | + | |
| 1928 | + | |
| 1929 | + | |
| 1930 | + | |
| 1931 | + | |
| 1932 | + | |
| 1933 | + | |
| 1934 | + | |
| 1935 | + | |
| 1936 | + | |
| 1937 | + | |
| 1938 | + | |
| 1939 | + | |
| 1940 | + | |
| 1941 | + | |
| 1942 | + | |
| 1943 | + | |
| 1944 | + | |
| 1945 | + | |
| 1946 | + | |
| 1947 | + | |
| 1948 | + | |
| 1949 | + | |
| 1950 | + | |
| 1951 | + | |
| 1952 | + | |
| 1953 | + | |
| 1954 | + | |
| 1955 | + | |
1786 | 1956 | | |
1787 | 1957 | | |
1788 | 1958 | | |
| |||
0 commit comments