Способы оптимизации?

Middle
1k просмотров
AFK Offer AI

Основные направления оптимизации Go-приложений:

Память: переиспользуй объекты через sync.Pool, предаллоцируй слайсы (make([]T, 0, n)), избегай лишних аллокаций (escape analysis: go build -gcflags="-m").

CPU: профилируй через pprof, избегай рефлексии, используй буферизованный I/O (bufio), минимизируй аллокации (меньше работы для GC).

Конкурентность: буферизованные каналы, worker pools, sync.RWMutex вместо Mutex для read-heavy нагрузки, атомики для простых счётчиков.

БД: индексы, prepared statements, batch-операции, connection pooling.

Главное правило: сначала профилируй (pprof, benchstat), потом оптимизируй. Не угадывай bottleneck.

Следующий вопрос

Преимущества горутин vs потоков?