Форум сайта python.su
Приветствую,
какой либе отдать предпочтение Boost или ctypes? Основная цель портирование С-кода. Интересует какой код будет быстрее работать после портирование?
Офлайн
Если С код - проще ctypes. К тому же, как понимаю, вам нужно всего лишь завернуть готовую библиотеку?
Для С++ лучший вариант - boost. ctypes, кстати, вообще для этого не предназначен.
По скорости будет так: Python C API -> boost -> ctypes.
Но, думаю, разница может быть не слишком велика. Все варианты довольно быстрые.
Нужно измерять на вашем проекте - соображениями общего плана не отделаться.
Вариант на ctypes, как правило, быстрее создавать и легче поддерживать.
Еще один неплохой вариант - делать обертку на Cython.
Офлайн
А в чем состоят минусы SWIG везде пишут что он намного проще boost::python. Но здесь на форуме часто звучит что swig лучше вообще не пользоваться. Чем boost лучше??
Офлайн
SWIG был сделан очень давно и использует не самые лучшие решения — что потом выливается в проблемы.
boost на самом деле тоже очень простой в использовании, если всё делать правильно. При том что возможностей у него гораздо больше.
Офлайн
Маленькое дополнение. SWIG - с/с++ -> any т.е. обертывалка с множеством целевых языков, а cytpes и boost только питон.
Офлайн
Приходилось писать враперы, лично мне после геморроя с boost (о swig вообще не говорю), лучший результат получился с sip.
Офлайн