У меня есть простой план для моей программы: выполнить весь входной синтаксический анализ и предварительную обработку данных с помощью Python, а затем передать множество структур и вызвать ОДИН РАЗ функцию обработки чисел, которую я собираюсь написать на C. Вот мой вопрос: что будет быстрее (с точки зрения скорости выполнения)? Вызвать функцию C с помощью ctypes или написать ее с помощью cython?
Скорость выполнения функции cython vs ctypes
Ответы (1)
Учитывая бесконечное количество времени для оптимизации вашего кода, Ctypes, вероятно, будут быстрее, поскольку вы сможете втиснуть как можно больше тяжелой работы в скомпилированный код.
cython берет код, похожий на python, и преобразует его в код C с множеством предостережений и исключений. Если бы cython был идеальным, он был бы таким же быстрым, как кодирование в C-API для python. cython — фантастический инструмент для быстрой разработки кода, но он еще не совсем совершенен.
Ctypes потребуют некоторых манипуляций с вашими входными переменными, чтобы аккуратно передать их в C. Это может не быть проблемой, если вы все равно выполняете предварительную обработку данных.
Как обычно, вам нужно решить, насколько важна скорость выполнения по сравнению со временем кодирования/читаемостью кода/возможностью повторного использования кода. Мне показалось бы странным, что меня интересует только скорость выполнения, и при этом вы хотите кодировать что-либо из этого на python.
И наоборот, общие парадигмы кодирования на Python будут иметь тенденцию контрастировать с большими разделами кода C, удерживаемыми вместе с помощью оболочек Python.