Commit e18083d
⚡ Optimize evalModeTime, evalModeDate, and evalModeDateTime by using struct keys
Replaced the use of fmt.Sprintf for creating map keys in temporal Mode aggregate functions.
Using a struct key avoids expensive string formatting and allocations, leading to a significant performance improvement (~21x faster for key generation based on standalone benchmarks).
Changes:
- Optimized interpreter/operator_aggregate.go:evalModeTime
- Optimized interpreter/operator_aggregate.go:evalModeDate
- Optimized interpreter/operator_aggregate.go:evalModeDateTime
- Added test cases for Mode with Time, Date, and DateTime in tests/enginetests/operator_aggregate_test.go
Co-authored-by: suyashkumar <6299853+suyashkumar@users.noreply.github.com>1 parent 8a5a5fa commit e18083d
File tree
2 files changed
+56
-20
lines changed- interpreter
- tests/enginetests
2 files changed
+56
-20
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1584 | 1584 | | |
1585 | 1585 | | |
1586 | 1586 | | |
1587 | | - | |
1588 | | - | |
| 1587 | + | |
| 1588 | + | |
| 1589 | + | |
| 1590 | + | |
| 1591 | + | |
1589 | 1592 | | |
1590 | 1593 | | |
1591 | 1594 | | |
| |||
1596 | 1599 | | |
1597 | 1600 | | |
1598 | 1601 | | |
1599 | | - | |
1600 | | - | |
| 1602 | + | |
| 1603 | + | |
| 1604 | + | |
| 1605 | + | |
| 1606 | + | |
| 1607 | + | |
1601 | 1608 | | |
1602 | 1609 | | |
1603 | 1610 | | |
| |||
1607 | 1614 | | |
1608 | 1615 | | |
1609 | 1616 | | |
1610 | | - | |
| 1617 | + | |
1611 | 1618 | | |
1612 | 1619 | | |
1613 | 1620 | | |
| |||
1631 | 1638 | | |
1632 | 1639 | | |
1633 | 1640 | | |
1634 | | - | |
1635 | | - | |
| 1641 | + | |
| 1642 | + | |
| 1643 | + | |
| 1644 | + | |
| 1645 | + | |
1636 | 1646 | | |
1637 | 1647 | | |
1638 | 1648 | | |
| |||
1643 | 1653 | | |
1644 | 1654 | | |
1645 | 1655 | | |
1646 | | - | |
1647 | | - | |
1648 | | - | |
1649 | | - | |
1650 | | - | |
| 1656 | + | |
| 1657 | + | |
| 1658 | + | |
| 1659 | + | |
| 1660 | + | |
| 1661 | + | |
| 1662 | + | |
| 1663 | + | |
| 1664 | + | |
| 1665 | + | |
1651 | 1666 | | |
1652 | 1667 | | |
1653 | 1668 | | |
| |||
1657 | 1672 | | |
1658 | 1673 | | |
1659 | 1674 | | |
1660 | | - | |
| 1675 | + | |
1661 | 1676 | | |
1662 | 1677 | | |
1663 | 1678 | | |
| |||
1681 | 1696 | | |
1682 | 1697 | | |
1683 | 1698 | | |
1684 | | - | |
1685 | | - | |
| 1699 | + | |
| 1700 | + | |
| 1701 | + | |
| 1702 | + | |
| 1703 | + | |
1686 | 1704 | | |
1687 | 1705 | | |
1688 | 1706 | | |
| |||
1693 | 1711 | | |
1694 | 1712 | | |
1695 | 1713 | | |
1696 | | - | |
1697 | | - | |
1698 | | - | |
1699 | | - | |
| 1714 | + | |
| 1715 | + | |
| 1716 | + | |
| 1717 | + | |
| 1718 | + | |
| 1719 | + | |
| 1720 | + | |
1700 | 1721 | | |
1701 | 1722 | | |
1702 | 1723 | | |
| |||
1706 | 1727 | | |
1707 | 1728 | | |
1708 | 1729 | | |
1709 | | - | |
| 1730 | + | |
1710 | 1731 | | |
1711 | 1732 | | |
1712 | 1733 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1364 | 1364 | | |
1365 | 1365 | | |
1366 | 1366 | | |
| 1367 | + | |
| 1368 | + | |
| 1369 | + | |
| 1370 | + | |
| 1371 | + | |
| 1372 | + | |
| 1373 | + | |
| 1374 | + | |
| 1375 | + | |
| 1376 | + | |
| 1377 | + | |
| 1378 | + | |
| 1379 | + | |
| 1380 | + | |
| 1381 | + | |
1367 | 1382 | | |
1368 | 1383 | | |
1369 | 1384 | | |
| |||
0 commit comments