Задумываетесь ли вы об оптимизации приложений
Что проверяют
Есть ли у вас инженерный подход: сначала измерить, потом менять, и понимаете ли вы, когда оптимизация не нужна. Следом почти всегда просят конкретный случай: что тормозило, как нашли, насколько ускорили.
Как отвечать
Правильная позиция: да, но от цифр, а не от интуиции. Каркас ответа на Go:
- цель: оптимизируют под метрику, обычно p95 или p99 латентности, RPS на инстанс, память или счёт за инфраструктуру. Без цели «ускорить» бессмысленно;
- измерение:
net/http/pprofна работающем сервисе с профилями CPU, heap, goroutine и mutex; бенчмаркиgo test -bench . -benchmemи сравнение прогонов черезbenchstat;go tool traceдля проблем с планировщиком и блокировками; - аллокации: частая причина в Go. Смотрят escape analysis через
-gcflags=-m, задают ёмкостьmake([]T, 0, n), собирают строки вstrings.Builder, переиспользуют буферы черезsync.Pool; - рантайм:
GOGCиGOMEMLIMITвместо ручных костылей; с Go 1.25GOMAXPROCSна Linux учитывает лимит CPU контейнера; - PGO: профиль из прода кладут в
default.pgo, компилятор использует его при сборке, прирост обычно в пределах нескольких процентов CPU; - внешнее: чаще всего время уходит не в Go-код, а в базу. N+1 запросы, отсутствующие индексы (
EXPLAIN ANALYZE), настройки пулаSetMaxOpenConnsиSetMaxIdleConns.
Пример приводите свой, в формате «что было в профиле, что поменяли, какая метрика до и после и как мерили». Например: большая доля CPU уходила на encoding/json, заменили на кодогенерацию, p99 снизился с X до Y мс на нагрузочном тесте. Если крупных оптимизаций не было, так и скажите и опишите, как искали бы узкое место.
Где спотыкаются
Отвечают «да, всегда пишу оптимальный код» и начинают с горутин. Оптимизация без профиля усложняет код, а узкое место обнаруживается совсем в другом месте.
Считают, что больше горутин значит быстрее. Неограниченный параллелизм упирается в пул соединений базы и лимиты внешних API; нужен ограничитель, например errgroup с SetLimit или семафор на канале.
Называют ускорение «на 50%», не зная, как его меряли. Без нагрузочного теста или метрик из прода такая цифра выглядит выдуманной.