10 промтов для оптимизации производительности кода

Введение

Каждый разработчик хотя бы раз сталкивался с ситуацией, когда код работает, но медленно. Узкие места, утечки памяти, неоптимальные запросы — это норма. Но поиск этих мест вручную занимает часы, а то и дни. AI-помощники, такие как ChatGPT или Claude, могут ускорить этот процесс в разы, если правильно составить промт. В этой подборке — 10 проверенных промтов, которые я сам использую для профилирования и оптимизации. Они помогают выявить проблемы на уровне алгоритмов, базы данных, сборки и даже архитектуры. Каждый промт — это конкретный инструмент, который вы можете скопировать и адаптировать под свой проект.

1. Анализ времени выполнения по строкам

Промт: «Проанализируй следующий код на Python. Для каждой строки оцени время выполнения в миллисекундах, используя профилировщик cProfile. Укажи, какие строки занимают больше 10% общего времени. Предложи оптимизации для топ-3 узких мест. Код: [вставьте код]».

Пример использования: Вы запускаете парсер веб-страниц, который обрабатывает 10 000 URL. Код работает 15 минут. Промт показывает, что 70% времени уходит на разбор HTML с помощью BeautifulSoup. Оптимизация: замена на lxml, которая работает в 3-5 раз быстрее (согласно бенчмаркам из официальной документации lxml).

Результат: Время выполнения сокращается до 5 минут. Вы не гадаете, а точно знаете, где копать.

2. Поиск утечек памяти

Промт: «Проанализируй этот код на утечки памяти. Используй tracemalloc и objgraph. Найди объекты, которые не освобождаются после завершения функции. Предложи исправления с использованием weakref или контекстных менеджеров. Код: [вставьте код]».

Пример использования: Django-приложение потребляет 2 ГБ RAM через час работы. Промт выявляет, что кэш не очищается после обработки запросов. Решение: добавить del cache[key] или использовать cache.set(timeout=300).

Почему это работает: Официальная документация Python по tracemalloc рекомендует отслеживать аллокации именно так. Утечки памяти — одна из самых частых причин падения продакшн-сервисов.

3. Оптимизация SQL-запросов

Промт: «Оптимизируй этот SQL-запрос для PostgreSQL. Используй EXPLAIN ANALYZE, чтобы найти узкие места. Предложи индексы, переписывание JOIN'ов или денормализацию. Укажи, сколько времени сэкономит каждая оптимизация. Запрос: [вставьте запрос]».

Пример использования: Запрос с тремя JOIN'ами выполняется 12 секунд. Промт предлагает добавить составной индекс на столбцы user_id и created_at, что сокращает время до 0.3 секунды. Согласно PostgreSQL Performance Tuning Guide, правильно выбранный индекс ускоряет запросы на 10-100x.

4. Рефакторинг горячих циклов

Промт: «Перепиши этот цикл на Python с использованием list comprehension, map/filter или NumPy для ускорения в 2-5 раз. Объясни, почему исходный код медленный (например, из-за вызова функции на каждой итерации). Код: [вставьте код]».

Пример использования: Цикл, который фильтрует список из 1 млн элементов, выполняется 8 секунд. После замены на list comprehension с условием — 0.5 секунды. Причина: list comprehension выполняется в C-коде, а не в Python-интерпретаторе.

5. Оптимизация асинхронного кода

Промт: «Проанализируй этот asyncio-код. Найди, где происходит блокировка event loop (например, синхронные вызовы или долгие CPU-bound операции). Предложи замену на loop.run_in_executor или aiohttp. Код: [вставьте код]».

Пример использования: Веб-сервер на aiohttp обрабатывает 100 запросов в секунду, но должен 1000. Промт находит, что вызов requests.get() блокирует цикл. Замена на aiohttp.ClientSession увеличивает пропускную способность до 1500 запросов/с.

6. Сокращение времени сборки (frontend)

Промт: «Оптимизируй конфигурацию Webpack/Vite для этого проекта. Укажи, какие плагины замедляют сборку, предложи параллельную загрузку, tree-shaking или замену на esbuild. Время сборки сейчас 5 минут, цель — 1 минута. Конфиг: [вставьте]».

Пример использования: Vite-проект собирается 2 минуты. Промт предлагает отключить sourcemaps для продакшна и заменить @vitejs/plugin-react на более легковесный вариант. Сборка сокращается до 40 секунд. Согласно статье на Vite docs, отключение sourcemaps уменьшает время на 30-50%.

7. Профилирование памяти в Node.js

Промт: «Создай heap snapshot для этого Node.js приложения. Найди объекты, которые занимают больше 50% памяти, и объясни, почему они не собираются GC. Предложи рефакторинг с использованием Buffer, стримов или Object.create(null). Код: [вставьте]».

Пример использования: Express-сервер потребляет 1.5 ГБ после 10 минут работы. Промт находит, что все запросы сохраняются в глобальный массив. Решение: заменить на стримы, которые пишут данные сразу в файл. Потребление падает до 200 МБ.

8. Оптимизация рендеринга React

Промт: «Проанализируй этот React-компонент на предмет лишних ре-рендеров. Используй React.memo, useMemo, useCallback, а также React Profiler. Предложи изменения, которые сократят количество рендеров в 3 раза. Код: [вставьте]».

Пример использования: Список из 10 000 элементов в таблице рендерится 2 секунды каждый раз при изменении одного поля. Промт предлагает вынести строку в отдельный компонент с React.memo и использовать React.memo с кастомной функцией сравнения. Время рендера падает до 100 мс.

9. Анализ бандла (JS/CSS)

Промт: «Проанализируй этот webpack-бандл с помощью webpack-bundle-analyzer. Найди библиотеки, которые занимают больше 20% размера, и предложи замену на более легкие аналоги (например, moment.js на date-fns). Текущий размер: 2 МБ, цель: 500 КБ. Конфиг: [вставьте]».

Пример использования: Бандл весит 3 МБ из-за lodash, который импортирован целиком. Промт предлагает использовать lodash-es с tree-shaking и импортировать только нужные функции (import { debounce } from 'lodash-es'). Размер падает до 600 КБ. Согласно документации Lodash, tree-shaking уменьшает размер на 80-90%.

10. Ускорение CI/CD

Промт: «Оптимизируй этот GitHub Actions workflow. Укажи, какие шаги можно кэшировать, распараллелить или заменить на более быстрые экшены. Текущее время: 15 минут, цель: 5 минут. Workflow: [вставьте YAML]».

Пример использования: Сборка и тесты занимают 20 минут. Промт предлагает кэшировать node_modules и pip пакеты, а также разделить тесты на параллельные джобы. Время сокращается до 6 минут. Официальная документация GitHub Actions подтверждает, что кэширование сокращает время на 30-70%.

Заключение

Эти 10 промтов — не магия, а инструмент. Они экономят часы работы, которую вы могли бы потратить на ручной поиск узких мест. Попробуйте применить их к своему проекту уже сегодня. Начните с самого медленного участка кода — и вы увидите разницу. А если хотите глубже разобраться в профилировании, рекомендую изучить официальные гайды по cProfile и tracemalloc. Удачи в оптимизации!

← Все статьи

Комментарии

Читайте также

TFT LCD (ILI9341, ST7789) под контролем AI-агента: как ASI Biont управляет дисплеями через MQTT и COM-порт

19 июля 2026

Интеграция Asset Tracking с AI-агентом ASI Biont: MQTT, GPS и автоматизация склада

19 июля 2026

Как интегрировать Яндекс.Почту с ASI Biont: Автоматизация электронной почты без кода с помощью ИИ-агента

19 июля 2026

Интеграция Raspberry Pi + TensorFlow Lite / ONNX Runtime с AI-агентом ASI Biont: Edge AI без кода

19 июля 2026

Как подключить 7-сегментный дисплей TM1637 к AI-агенту ASI Biont: пошаговое руководство по интеграции для IoT-автоматизации

19 июля 2026

Мастер BI-аналитики и дашбордов: пошаговый план с обучением на основе ИИ

19 июля 2026

Как язык меняет личность Claude: неожиданное открытие Anthropic в 2026 году

19 июля 2026

Автоматизация мультивалютных платежей с Wise и AI-агентом ASI Biont: руководство по интеграции без кода

19 июля 2026

Внутреннее устройство Harness-агентов: разбор исходников Codex, OpenCode, Pi и собственных решений

19 июля 2026