Skip to content

Commit 5dcac63

Browse files
authored
perf: pre allocate maps in btp processing (#7050)
Signed-off-by: Arko Dasgupta <arko@tetrate.io>
1 parent 26b381c commit 5dcac63

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

internal/gatewayapi/backendtrafficpolicy.go

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,17 @@ func (t *Translator) ProcessBackendTrafficPolicies(resources *resource.Resources
3939
routes []RouteContext,
4040
xdsIR resource.XdsIRMap,
4141
) []*egv1a1.BackendTrafficPolicy {
42-
res := make([]*egv1a1.BackendTrafficPolicy, 0, len(resources.BackendTrafficPolicies))
43-
4442
backendTrafficPolicies := resources.BackendTrafficPolicies
4543
// BackendTrafficPolicies are already sorted by the provider layer
4644

45+
routeMapSize := len(routes)
46+
gatewayMapSize := len(gateways)
47+
policyMapSize := len(backendTrafficPolicies)
48+
49+
res := make([]*egv1a1.BackendTrafficPolicy, 0, policyMapSize)
50+
4751
// First build a map out of the routes and gateways for faster lookup since users might have thousands of routes or more.
48-
routeMap := map[policyTargetRouteKey]*policyRouteTargetContext{}
52+
routeMap := make(map[policyTargetRouteKey]*policyRouteTargetContext, routeMapSize)
4953
for _, route := range routes {
5054
key := policyTargetRouteKey{
5155
Kind: string(route.GetRouteType()),
@@ -55,19 +59,19 @@ func (t *Translator) ProcessBackendTrafficPolicies(resources *resource.Resources
5559
routeMap[key] = &policyRouteTargetContext{RouteContext: route}
5660
}
5761

58-
gatewayMap := map[types.NamespacedName]*policyGatewayTargetContext{}
62+
gatewayMap := make(map[types.NamespacedName]*policyGatewayTargetContext, gatewayMapSize)
5963
for _, gw := range gateways {
6064
key := utils.NamespacedName(gw)
6165
gatewayMap[key] = &policyGatewayTargetContext{GatewayContext: gw}
6266
}
6367

6468
// Map of Gateway to the routes attached to it
65-
gatewayRouteMap := make(map[string]sets.Set[string])
69+
gatewayRouteMap := make(map[string]sets.Set[string], gatewayMapSize)
6670

67-
handledPolicies := make(map[types.NamespacedName]*egv1a1.BackendTrafficPolicy)
71+
handledPolicies := make(map[types.NamespacedName]*egv1a1.BackendTrafficPolicy, policyMapSize)
6872

69-
gatewayPolicyMap := make(map[types.NamespacedName]*egv1a1.BackendTrafficPolicy)
70-
gatewayPolicyMerged := make(map[types.NamespacedName]sets.Set[string])
73+
gatewayPolicyMap := make(map[types.NamespacedName]*egv1a1.BackendTrafficPolicy, gatewayMapSize)
74+
gatewayPolicyMerged := make(map[types.NamespacedName]sets.Set[string], gatewayMapSize)
7175

7276
// Translate
7377
// 1. First translate Policies targeting xRoutes

0 commit comments

Comments
 (0)