2012-02-18 3 views
14

Модули расширения Python, написанные на C, быстрее, чем эквивалентные программы, написанные на чистом Python. Как эти модули расширения сравниваются (по скорости) с программами, написанными на чистом C? Программы, написанные на чистом C, даже быстрее, чем эквивалентный модуль расширения Python?Скорость расширений Python в C по сравнению с C

+0

Возможно, вам стоит рассмотреть Cython, если вы думаете о написании расширений/модулей/... – hochl

+0

В C против C? Какие? –

+0

@hochl - Разве Китон не просто обычный Python? В отличие от Jython или IronPython? – mau5padd

ответ

15

Как эти модули расширения (сравните скорость мудрое) для программ, написанных на чистом C?

Они немного медленнее из-за перевода между структурами данных Python -> C типов. Невзирая на этот перевод, фактический код C работает с той же скоростью, что и обычная функция C.

Программы, написанные на чистом C, даже быстрее, чем эквивалентный модуль расширения Python?

Программы C (написанные полностью на C) могут быть быстрее программ Python с использованием модулей расширения C. Если программа C и модуль расширения написаны с одинаковым уровнем сложности, умение кодера, алгоритмическая сложность и т. Д., Программа C победит каждый раз. Однако, если вы не являетесь C-гуру и конкурируете с высоко оптимизированным расширением Python C, Python может быть быстрее.

4

Будучи расширением Python, не влияет на скорость выполнения фрагмента кода, за исключением того, что Python, вызывающий его, медленнее, чем эквивалент C, и компилятор менее способен к агрессивному разворачиванию и встроенному коду, который пересекает границу C/Python.

То есть, если вы просто используете код Python для вызова функции C, а затем выполняете всю свою работу в этой функции, единственной разницей в производительности будет количество времени, которое вы потратили , до, попадая в сторона С вещей. С этого момента, она является родной C.

Смежные вопросы