Почему CPython работает быстрее, чем PyPy в двух тестах "slowspitfire" и "waf"?
Судя по тестам, опубликованным в PyPy Speed Center, кажется, что PyPy работает быстрее, чем CPython, для всех тестов, кроме двух.
CPython быстрее, чем PyPy, в двух тестах "slowspitfire" и "waf". Это почему? Какие операции тестируют эти два теста? Что делает CPython быстрее для этих операций? Можно ли ожидать, что PyPy догонит и победит CPython и в этих двух тестах?
1 ответ
Как сказал Тобу, в списке рассылки есть сообщение, в котором поясняется объяснение медленного огня: длинные списки с объектами GC в них, среди прочих факторов.
Тест производительности waf имеет менее выраженную разницу в производительности, и я предполагаю, что ответ будет более сложным: некоторые факторы PyPy работают лучше, некоторые факторы CPython лучше, и в целом CPython выходит немного вперед.
В общем, есть несколько причин, по которым JIT-оптимизированная реализация будет работать медленнее:
- общие накладные расходы в JIT'ing и проверка того, следует ли JIT
- Компромисс между памятью и процессором: использование слишком большого объема памяти для экономии времени ЦП или необходимость более частой подкачки
- JIT'ing слишком агрессивно, или JIT'ing неправильный код в неправильное время