Программирование

Найди узкие места в медленном коде

Проводит производительный разбор кода: отделяет измеренные проблемы от предположений, ищет лишние запросы, аллокации и сложность и предлагает порядок оптимизации.

Автор: PromptingGo Средний Язык: ru Просмотры: 1 Копирования: 0 Есть настройка
Средняя оценка
/ 5
Голосов: 0
Войти, чтобы оценить

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
Комментариев пока нет. Будьте первым, кто обсудит этот промпт.