mirror of
https://github.com/coredns/coredns.git
synced 2025-11-01 02:33:14 -04:00
perf(kubernetes): optimize AutoPath slice allocation (#7323)
Pre-allocate slice capacity in AutoPath to eliminate unnecessary memory reallocations. This avoids slice growth when appending search domains and sentinel value. Benchmark shows significant performance improvement: - Before: 538.6 ns/op, 560 B/op, 13 allocs/op - After: 436.8 ns/op, 336 B/op, 11 allocs/op - Result: 19% faster, 40% less memory, 15% fewer allocations The optimization benefits Kubernetes clusters using autopath for server-side search path completion. Adds benchmark test to measure AutoPath performance. Signed-off-by: Ville Vesilehto <ville@vesilehto.fi>
This commit is contained in:
@@ -33,15 +33,12 @@ func (k *Kubernetes) AutoPath(state request.Request) []string {
|
||||
return nil
|
||||
}
|
||||
|
||||
search := make([]string, 3)
|
||||
totalSize := 3 + len(k.autoPathSearch) + 1 // +1 for sentinel
|
||||
search := make([]string, 0, totalSize)
|
||||
if zone == "." {
|
||||
search[0] = pod.Namespace + ".svc."
|
||||
search[1] = "svc."
|
||||
search[2] = "."
|
||||
search = append(search, pod.Namespace+".svc.", "svc.", ".")
|
||||
} else {
|
||||
search[0] = pod.Namespace + ".svc." + zone
|
||||
search[1] = "svc." + zone
|
||||
search[2] = zone
|
||||
search = append(search, pod.Namespace+".svc."+zone, "svc."+zone, zone)
|
||||
}
|
||||
|
||||
search = append(search, k.autoPathSearch...)
|
||||
|
||||
Reference in New Issue
Block a user