Prioritize reducing memory allocations and choosing efficient data structures to improve performance. Avoid unnecessary string/byte conversions, use maps for O(1) lookups instead of slices, and leverage compiler optimizations where possible.
Prioritize reducing memory allocations and choosing efficient data structures to improve performance. Avoid unnecessary string/byte conversions, use maps for O(1) lookups instead of slices, and leverage compiler optimizations where possible.
Key strategies:
utils.EqualFold
instead of utils.ToLower
for case-insensitive comparisons to avoid allocationsmap[int]bool
instead of []int
for O(1) performancestrings.ToLower(scheme + "://" + host)
instead of separate calls[]byte
to string
comparisonsfasthttp.ParseFloat
and UnsafeBytes
when availableExample:
// Inefficient - multiple allocations
if utils.ToLower(cookie.SameSite) == CookieSameSiteNoneMode {
// process
}
// Efficient - no allocations
if utils.EqualFold(cookie.SameSite, CookieSameSiteNoneMode) {
// process
}
// Inefficient - O(n) lookup
var cacheableStatusCodes = []int{200, 203, 300, 301}
if slices.Contains(cacheableStatusCodes, status) { /* ... */ }
// Efficient - O(1) lookup
var cacheableStatusCodes = map[int]bool{200: true, 203: true, 300: true, 301: true}
if cacheableStatusCodes[status] { /* ... */ }
Enter the URL of a public GitHub repository