Карточка Junior Память и производительность обновлено
Почему Python медленнее C
Вопрос
Почему чистый Python медленнее C на вычислениях?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
Интерпретация байткода, динамическая типизация (проверка типов на каждой операции), все значения это объекты в куче со счётчиками ссылок, GIL мешает использовать ядра в потоках.
Ответ
Интерпретация байткода, динамическая типизация (проверка типов на каждой операции), все значения это объекты в куче со счётчиками ссылок, GIL мешает использовать ядра в потоках.
Разбор
Поэтому тяжёлые вычисления делают через библиотеки на C (numpy), а Python оставляют для склейки логики. CPython 3.11+ заметно ускорился за счёт специализирующего интерпретатора.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Память и производительность»
- Встроенные функции против ручного цикла
- Пересечение больших списков id
- Числа Фибоначчи без экспоненты
- Скользящая медиана потока на двух кучах
- Найти пару с суммой быстрее O(n²)
- Циклические ссылки и gc
- Управление памятью в CPython
- Поколения сборщика мусора