Выбор ответа Middle Память и производительность спрашивают часто обновлено
С чего начинать оптимизацию
Вопрос
Эндпоинт отвечает 3 секунды. С чего начать?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Снять профиль (cProfile, py-spy). Без измерений легко оптимизировать не то: часто время уходит на десятки запросов к БД или внешний HTTP, а не на Python-код.
Варианты ответа
- Переписать горячие функции на Cython
- Снять профиль (
cProfile,py-spy)правильный ответ - Заменить все списки на кортежи
- Добавить больше воркеров gunicorn
Разбор
Без измерений легко оптимизировать не то: часто время уходит на десятки запросов к БД или внешний HTTP, а не на Python-код. Профиль показывает узкое место. Cython и микрооптимизации полезны только для доказанно горячего CPU-кода. Больше воркеров повышает пропускную способность, но не уменьшает время одного медленного ответа.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Память и производительность»
- Встроенные функции против ручного цикла
- Пересечение больших списков id
- Числа Фибоначчи без экспоненты
- Скользящая медиана потока на двух кучах
- Найти пару с суммой быстрее O(n²)
- Циклические ссылки и gc
- Управление памятью в CPython
- Инструменты профилирования Python