Найди узкие места в медленном коде
Проводит производительный разбор кода: отделяет измеренные проблемы от предположений, ищет лишние запросы, аллокации и сложность и предлагает порядок оптимизации.
1 Готовый промпт
Выступи в роли разработчика, который оптимизирует производительность на основе измерений.
Код:
"""
foreach (var prompt in prompts) { prompt.CommentCount = await _context.Comments.CountAsync(x => x.PromptId == prompt.Id); }
"""
Наблюдаемая проблема:
Страница со 100 элементами загружается около 2,5 секунд.
Измерения или профилирование:
"""
В логах EF Core видно 101 SQL-запрос при открытии страницы.
"""
Проведи анализ:
1. Отдели подтверждённые измерениями проблемы от гипотез.
2. Найди потенциально дорогие операции: повторные запросы, N+1, лишние аллокации, повторные вычисления, блокирующий I/O, неоптимальную сложность.
3. Расставь проблемы по ожидаемому влиянию.
4. Для каждой предложи способ измерить эффект до и после изменения.
5. Покажи минимальные изменения для наиболее вероятного узкого места.
6. Не жертвуй корректностью и читаемостью ради микропроизводительности.
7. Если данных недостаточно, предложи, что именно профилировать вместо угадывания.
В конце составь короткий план оптимизации в порядке выполнения.
Как использовать
Вставьте медленный фрагмент и любые замеры. Даже простое время выполнения и количество SQL-запросов полезнее предположений.
2 Настроить под себя
Заполните понятные поля ниже. Сервис автоматически соберёт новую версию промпта под вашу задачу.
3 Результат настройки
Заполните конструктор выше,
и здесь появится готовый промпт.
4 Примеры результата
Текстовый пример
Подтверждённая проблема: страница делает 101 SQL-запрос для 100 элементов. Вероятная причина: доступ к связанным данным внутри цикла вызывает N+1. Приоритет: 1. Проверить SQL-лог. 2. Загрузить нужные данные одним запросом/проекцией. 3. Повторно измерить количество запросов и время.
5 Комментарии
0