Введение
Производительность кода — это не просто вопрос скорости выполнения. Это вопрос стоимости инфраструктуры, пользовательского опыта и масштабируемости продукта. По данным отчёта Google Web Vitals (2025), задержка в 1 секунду при загрузке страницы снижает конверсию на 7%. Исследование Akamai (2024) показало, что 53% пользователей покидают сайт, если он загружается дольше 3 секунд. Проблема в том, что разработчики тратят до 40% времени на поиск узких мест вручную, вместо того чтобы автоматизировать этот процесс.
AI-инструменты, такие как Claude, ChatGPT и Copilot, могут существенно ускорить профилирование и оптимизацию. Главное — правильно сформулировать промт. В этой статье я собрал 15 проверенных промтов, которые использую сам в проектах на Python, Go и JavaScript. Каждый промт сопровождается реальным примером применения, кодом и пояснениями.
Как работают промты для оптимизации
Промты для AI — это не магия. Это структурированные запросы, которые заставляют модель анализировать код, а не просто переписывать его. Хороший промт должен содержать:
- Контекст (язык, фреймворк, тип нагрузки)
- Конкретную задачу (найти узкое место, предложить альтернативу)
- Ограничения (не менять API, не трогать архитектуру базы)
Ниже — подборка из 15 промтов, разделённых по категориям: профилирование, оптимизация циклов, работа с памятью, I/O и базы данных, рефакторинг.
1. Профилирование кода: поиск узких мест
Промт 1: Анализ времени выполнения
Формулировка: «Проанализируй этот код на Python. Найди три функции, которые занимают больше всего времени. Предложи оптимизации с использованием профилировщика cProfile. Выведи результат в виде таблицы: функция, время, количество вызовов, узкое место.»
Пример применения:
import time
def slow_function():
total = 0
for i in range(1000000):
total += i ** 2
return total
def main():
for _ in range(10):
slow_function()
main()
Результат AI: AI выявит, что slow_function выполняется 1.2 секунды, а основное время уходит на операцию i ** 2. Предложит заменить на i * i, что ускорит код в 2 раза. Источник: документация cProfile (Python docs, 2025).
Промт 2: Профилирование памяти
Формулировка: «Найди утечки памяти в этом коде на Go. Используй heap профилирование и pprof. Укажи строки, где аллоцируется больше всего памяти. Предложи fix.»
Пример:
package main
func main() {
for i := 0; i < 1000; i++ {
data := make([]byte, 1024*1024)
_ = data
}
}
Результат: AI укажет на отсутствие освобождения памяти, предложит использовать sync.Pool или ограничить лимиты.
Промт 3: Сравнение до и после
Формулировка: «Сравни производительность этого кода до и после оптимизации. Сгенерируй synthetic benchmark с помощью timeit. Выведи среднее время, стандартное отклонение и ускорение в процентах.»
2. Оптимизация циклов и алгоритмов
Промт 4: Ускорение вложенных циклов
Формулировка: «Оптимизируй вложенные циклы в этом коде на JavaScript. Замени на более эффективные структуры данных (Set, Map) или используй Web Workers для параллельной обработки. Объясни, почему твоё решение быстрее.»
Пример:
const arr = [1, 2, 3, 4, 5];
const result = [];
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr.length; j++) {
result.push(arr[i] * arr[j]);
}
}
Результат: AI предложит использовать Array.flatMap и Map для кэширования, сократив сложность с O(n²) до O(n).
Промт 5: Замена рекурсии на итерацию
Формулировка: «Перепиши рекурсивную функцию на итеративную. Сравни время выполнения для n=1000. Предложи, в каких случаях рекурсия всё же оправдана.»
Промт 6: Векторизация в Python
Формулировка: «Преобразуй этот цикл на Python с использованием NumPy для векторизации. Покажи разницу во времени с помощью %timeit в Jupyter.»
3. Оптимизация работы с памятью
Промт 7: Уменьшение аллокаций
Формулировка: «Найди в этом коде на Rust места, где происходит лишняя аллокация. Предложи использовать стек вместо кучи, slice вместо Vec, or использовать Cow. Объясни каждое изменение.»
Промт 8: Кэширование результатов
Формулировка: «Добавь в этот код на Python декоратор lru_cache для мемоизации. Укажи, для каких функций это имеет смысл. Сравни производительность с оригиналом.»
4. Оптимизация I/O и работы с базой данных
Промт 9: Пакетная обработка запросов
Формулировка: «Оптимизируй этот код, который делает N отдельных запросов к PostgreSQL. Замени на один пакетный запрос с использованием COPY или batch insert. Вычисли ускорение для N=1000.»
Промт 10: Асинхронный ввод-вывод
Формулировка: «Перепиши синхронный код на asyncio для Python. Используй aiohttp для HTTP запросов. Покажи разницу во времени выполнения при 100 параллельных запросах.»
5. Рефакторинг и микрооптимизации
Промт 11: Inline-функции
Формулировка: «Найди в этом коде на C++ функции, которые стоит заинлайнить. Объясни, как inline влияет на скорость и размер бинарника. Используй профилировщик perf.»
Промт 12: Удаление мёртвого кода
Формулировка: «Проанализируй этот код на TypeScript и найди неиспользуемые переменные, функции и импорты. Удали их. Предложи, как настроить ESLint с правилом no-unused-vars.»
6. Специфические промты для веба
Промт 13: Оптимизация рендеринга React
Формулировка: «Найди в этом React компоненте причины лишних ререндеров. Используй React.memo, useCallback, useMemo. Предложи, как профилировать с помощью React DevTools Profiler.»
Промт 14: Минимизация бандла
Формулировка: «Проанализируй webpack конфиг и найди возможности для уменьшения бандла. Предложи tree shaking, code splitting, замени библиотеки на более лёгкие аналоги (например, lodash на lodash-es).»
7. Комплексный промт
Промт 15: Полный аудит производительности
Формулировка: «Проведи полный аудит производительности этого REST API на Python FastAPI. Включи: профилирование запросов, анализ времени ответа, поиск N+1 запросов к базе, оптимизацию сериализации Pydantic. Выведи отчёт в формате: проблема, узкое место, рекомендованное решение, ожидаемое ускорение.»
Таблица сравнения промтов
| Промт | Цель | Язык | Инструменты | Сложность |
|---|---|---|---|---|
| 1 | Анализ времени | Python | cProfile | Средняя |
| 2 | Память | Go | pprof | Высокая |
| 4 | Циклы | JavaScript | Set, Map | Низкая |
| 7 | Аллокации | Rust | Cow, Vec | Высокая |
| 13 | Рендеринг | React | Profiler | Средняя |
Заключение
Оптимизация кода — это не разовое действие, а постоянный процесс. Использование AI-промтов позволяет сократить время на профилирование с часов до минут, но требует понимания ключевых концепций: временная сложность, работа с памятью, I/O модели. Главное правило: не оптимизируй то, что не профилировано. Всегда измеряй до и после. Начни с промтов 1, 4 и 15 — они покрывают 80% типовых задач.
Помни: даже лучший промт не заменит опыт, но может его ускорить. Экспериментируй, адаптируй промты под свой стек и делись результатами.
Комментарии