Скорость расширений Python в C против C
Модули расширения Python, написанные на C, быстрее, чем эквивалентные программы, написанные на чистом Python. Как эти модули расширения сравниваются (по скорости) с программами, написанными на чистом C? Программы, написанные на чистом C, даже быстрее, чем эквивалентный модуль расширения Python?
Ответы
Ответ 1
Как эти модули расширения сравниваются (скорость) с программами, написанными на чистом C?
Они немного медленнее из-за перевода между структурами данных Python → C. Невзирая на этот перевод, фактический код C работает с той же скоростью, что и обычная функция C.
Являются ли программы, написанные в чистом C еще быстрее, чем эквивалентный модуль расширения Python?
Программы C (написанные полностью на C) могут быть быстрее программ Python с использованием модулей расширения C. Если программа C и модуль расширения написаны с одинаковым уровнем сложности, умение кодера, алгоритмическая сложность и т.д., Программа C победит каждый раз. Однако, если вы не являетесь C-гуру и конкурируете с высоко оптимизированным расширением Python C, Python может быть быстрее.
Ответ 2
Будучи расширением Python, не влияет на скорость выполнения части кода, за исключением того, что Python, вызывающий его, медленнее, чем эквивалент C, и компилятор менее способен агрессивно разворачивать и встроенный код, который пересекает граница C/Python.
То есть, если вы просто используете код Python для вызова функции C, а затем выполняете всю свою работу в этой функции, единственная разница в производительности - это количество времени, которое вы потратили, прежде чем попасть на сторону C вещей. С этого момента он имеет собственный C.