Commit 2e57be5
perf: Optimize
Refactored the `skip_positions` method to use an `#[inline(always)]` generic helper method `skip_positions_generic<M: MatchLen>`.
This abstraction allows the Rust compiler to monomorphize the loop per SIMD strategy (e.g., `Sse2Strategy`, `NeonStrategy`), enabling it to fully inline the inner `advance_one_byte_generic` call and unroll the loop effectively.
Also included minor logic cleanups automatically flagged by `cargo clippy`.
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>MatchFinder::skip_positions loop unrolling (#410)1 parent 889f910 commit 2e57be5
2 files changed
Lines changed: 46 additions & 78 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1605 | 1605 | | |
1606 | 1606 | | |
1607 | 1607 | | |
1608 | | - | |
| 1608 | + | |
| 1609 | + | |
1609 | 1610 | | |
1610 | 1611 | | |
1611 | 1612 | | |
1612 | 1613 | | |
1613 | 1614 | | |
1614 | 1615 | | |
| 1616 | + | |
| 1617 | + | |
| 1618 | + | |
| 1619 | + | |
| 1620 | + | |
| 1621 | + | |
| 1622 | + | |
| 1623 | + | |
| 1624 | + | |
| 1625 | + | |
| 1626 | + | |
| 1627 | + | |
| 1628 | + | |
| 1629 | + | |
| 1630 | + | |
| 1631 | + | |
| 1632 | + | |
| 1633 | + | |
| 1634 | + | |
| 1635 | + | |
| 1636 | + | |
1615 | 1637 | | |
1616 | 1638 | | |
1617 | 1639 | | |
1618 | 1640 | | |
1619 | | - | |
1620 | | - | |
1621 | | - | |
1622 | | - | |
1623 | | - | |
1624 | | - | |
1625 | | - | |
1626 | | - | |
1627 | | - | |
1628 | | - | |
1629 | | - | |
| 1641 | + | |
| 1642 | + | |
| 1643 | + | |
1630 | 1644 | | |
1631 | 1645 | | |
1632 | 1646 | | |
1633 | | - | |
1634 | | - | |
1635 | | - | |
1636 | | - | |
1637 | | - | |
1638 | | - | |
1639 | | - | |
1640 | | - | |
1641 | | - | |
1642 | | - | |
1643 | | - | |
| 1647 | + | |
| 1648 | + | |
| 1649 | + | |
1644 | 1650 | | |
1645 | 1651 | | |
1646 | 1652 | | |
1647 | | - | |
1648 | | - | |
1649 | | - | |
1650 | | - | |
1651 | | - | |
1652 | | - | |
1653 | | - | |
1654 | | - | |
1655 | | - | |
1656 | | - | |
1657 | | - | |
| 1653 | + | |
| 1654 | + | |
| 1655 | + | |
1658 | 1656 | | |
1659 | 1657 | | |
1660 | 1658 | | |
1661 | | - | |
1662 | | - | |
1663 | | - | |
1664 | | - | |
1665 | | - | |
1666 | | - | |
1667 | | - | |
1668 | | - | |
1669 | | - | |
1670 | | - | |
1671 | | - | |
| 1659 | + | |
| 1660 | + | |
| 1661 | + | |
1672 | 1662 | | |
1673 | 1663 | | |
1674 | 1664 | | |
1675 | | - | |
1676 | | - | |
1677 | | - | |
1678 | | - | |
1679 | | - | |
1680 | | - | |
1681 | | - | |
1682 | | - | |
1683 | | - | |
1684 | | - | |
1685 | | - | |
| 1665 | + | |
| 1666 | + | |
| 1667 | + | |
1686 | 1668 | | |
1687 | 1669 | | |
1688 | 1670 | | |
1689 | | - | |
1690 | | - | |
1691 | | - | |
1692 | | - | |
1693 | | - | |
1694 | | - | |
1695 | | - | |
1696 | | - | |
1697 | | - | |
1698 | | - | |
1699 | | - | |
| 1671 | + | |
| 1672 | + | |
| 1673 | + | |
1700 | 1674 | | |
1701 | 1675 | | |
1702 | 1676 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1916 | 1916 | | |
1917 | 1917 | | |
1918 | 1918 | | |
1919 | | - | |
1920 | | - | |
1921 | | - | |
1922 | | - | |
1923 | | - | |
1924 | | - | |
1925 | | - | |
| 1919 | + | |
1926 | 1920 | | |
1927 | 1921 | | |
1928 | 1922 | | |
| |||
2013 | 2007 | | |
2014 | 2008 | | |
2015 | 2009 | | |
2016 | | - | |
| 2010 | + | |
2017 | 2011 | | |
2018 | 2012 | | |
2019 | 2013 | | |
| |||
2022 | 2016 | | |
2023 | 2017 | | |
2024 | 2018 | | |
2025 | | - | |
| 2019 | + | |
2026 | 2020 | | |
2027 | 2021 | | |
2028 | 2022 | | |
| |||
2034 | 2028 | | |
2035 | 2029 | | |
2036 | 2030 | | |
2037 | | - | |
| 2031 | + | |
2038 | 2032 | | |
2039 | 2033 | | |
2040 | 2034 | | |
| |||
2043 | 2037 | | |
2044 | 2038 | | |
2045 | 2039 | | |
2046 | | - | |
| 2040 | + | |
2047 | 2041 | | |
2048 | 2042 | | |
2049 | 2043 | | |
| |||
0 commit comments