Уровни оптимизации кода на Go: начинай с главного
https://habr.com/ru/companies/vk/articles/902820/
Автор разделяет оптимизацию на три уровня:
1. Макровзаимодействия — HTTP / gRPC / SQL, старт процессов (десятки‑сотни миллисекунд).
2. Микровзаимодействия — syscalls, WebSocket внутри открытого соединения (микросекунды).
3. Инструкции CPU — циклы, копирование памяти, сортировки (наносекунды).
Главный тезис: оптимизацию нужно начинать с первых уровней. То есть, сначала устраняем крупные проблемы, а потом уже думаем об аллокациях.
Цитата:
Оптимизируя код, действуйте в следующей последовательности: сначала оптимизируйте крупные операции, затем переходите к более мелким. Начните с удаления каких-то операций, потом уменьшайте сложность, и только в конце — распараллеливайте. Так вы потратите меньше времени на увеличение скорости работы вашего приложения. Не придется запускать профилировщик на каждый чих, потому что можно просто посмотреть и сразу понять, что надо делать.
Статья короткая, но неплохо расставляет приоритеты. Рекомендую, особенно джунам, которые любят начинать оптимизацию с make(slice, 0, cap)
Ну и, к слову про оптимизацию, не забывайте
классику#article