В 2026 году высоконагруженные сервисы требуют не только знаний, но и скорости разработки. Go и Rust остаются лидерами для бэкенда: Go — за простоту и конкурентность, Rust — за производительность и безопасность памяти. Но даже опытные разработчики тратят часы на профилирование, оптимизацию и отладку. AI-ассистенты (например, на базе LLM) могут ускорить эти задачи, если правильно формулировать промты. В этой подборке — 12 проверенных промтов, которые я использую в ежедневной работе над высоконагруженными сервисами. Каждый промт сопровождается примером и пояснением, для каких задач он подходит. Все примеры кода реальны и проверены на Go 1.22+ и Rust 1.75+.
1. Профилирование горячих путей на Go
Промт:
Проанализируй этот профиль CPU (pprof) и найди топ-5 функций по потреблению CPU. Предложи оптимизации для каждой, учитывая, что сервис обрабатывает 50k RPS. Используй стандартные инструменты Go: pprof, trace. Приведи примеры кода до и после.
Пример: Вы запускаете go tool pprof -http=:8080 cpu.prof и видите, что 40% времени уходит на encoding/json.Marshal. AI предлагает заменить на jsoniter или использовать easyjson. После замены потребление CPU падает на 25%.
2. Конкурентность в Go: поиск гонок
Промт:
Проверь этот код на Go на наличие data race. Используй go test -race. Если есть, предложи исправление с помощью sync.Mutex или каналов. Объясни, почему возникла гонка.
Пример: В коде есть общий счетчик, инкрементируемый из нескольких горутин. AI указывает на необходимость atomic.AddInt64 или мьютекса. После исправления go test -race проходит чисто.
3. Оптимизация аллокаций в Rust
Промт:
Этот код на Rust часто аллоцирует память в горячем цикле. Предложи использовать stack-аллокации или переиспользование буферов. Покажи, как изменить код с помощью SmallVec или ArrayVec.
Пример: В цикле создается Vec для каждого запроса. AI предлагает заменить на SmallVec<[u8; 64]>, что снижает нагрузку на аллокатор.
4. Безопасная работа с памятью в Rust
Промт:
Объясни, почему этот код на Rust не компилируется из-за borrow checker. Предложи два варианта исправления: с использованием Rc<RefCell> и с изменением архитектуры на владение. Сравни производительность.
Пример: Ошибка cannot borrow as mutable. AI показывает, как использовать RefCell для интерьерной мутабельности или переписать на передачу владения.
5. Бенчмарки в Go
Промт:
Напиши бенчмарк для функции X, которая обрабатывает 1 млн элементов. Используй testing.B, сравни производительность с альтернативной реализацией. Учти аллокации с помощью b.ReportAllocs().
Пример: Бенчмарк показывает, что рекурсивная функция медленнее итеративной на 30%.
6. Асинхронность в Rust с Tokio
Промт:
Перепиши этот синхронный код на Rust с использованием Tokio для асинхронного выполнения. Убедись, что нет блокирующих вызовов в async-контексте. Предложи использовать tokio::spawn для параллельных задач.
Пример: Синхронный HTTP-клиент заменяется на reqwest::async, что увеличивает пропускную способность.
7. Оптимизация сборки мусора в Go
Промт:
Проанализируй этот код на Go на предмет избыточных аллокаций, вызывающих давление на GC. Предложи использовать sync.Pool для переиспользования объектов. Покажи пример с пулом буферов.
Пример: Вместо создания нового буфера на каждый запрос используем sync.Pool, что снижает частоту GC.
8. Использование unsafe в Rust
Промт:
Покажи, как безопасно использовать unsafe в Rust для оптимизации доступа к массиву. Объясни, какие инварианты нужно соблюдать. Приведи пример с get_unchecked.
Пример: В критичном цикле замена проверки границ на get_unchecked ускоряет работу на 10%, но требует гарантий корректности индексов.
9. Профилирование памяти в Rust
Промт:
Как использовать Valgrind или heaptrack для профилирования памяти в Rust? Найди утечки или избыточные аллокации в этом коде. Предложи исправления.
Пример: AI рекомендует использовать jemalloc для уменьшения фрагментации.
10. Оптимизация сетевого стека в Go
Промт:
Настрой HTTP-сервер на Go для максимальной пропускной способности: используй keep-alive, настрой ReadTimeout, WriteTimeout, MaxHeaderBytes. Приведи пример конфигурации.
Пример: Установка ReadTimeout: 5 * time.Second и MaxHeaderBytes: 1 << 20 предотвращает медленные атаки.
11. Параллелизм в Rust с Rayon
Промт:
Перепиши этот последовательный код на Rust с использованием Rayon для параллельной обработки данных. Убедись, что нет гонок. Покажи пример с par_iter.
Пример: Обработка слайса через par_iter().map() ускоряется в 3 раза на 8 ядрах.
12. Интеграция с Prometheus для мониторинга
Промт:
Добавь метрики Prometheus в этот сервис на Go: счетчики запросов, гистограммы задержек. Используй prometheus/client_golang. Приведи пример кода.
Пример: Метрика http_request_duration_seconds помогает выявить узкие места.
Эти промты помогают быстрее находить узкие места и писать оптимальный код. Главное — проверять предложения AI на реальных бенчмарках. Комбинируйте инструменты: pprof, perf, Valgrind. И помните: AI — помощник, но финальное решение за вами. Экспериментируйте, измеряйте, оптимизируйте.
Комментарии