У меня есть библиотека на С++. Как-то решил от скуки попробовать написать тоже самое на чистом С часть 1, часть 2. Один из сценариев использования библиотеки – из Python, для С++ я использовал pybind11, а для С попробовал разные варианты (ctypes, cffi, cython) и даже сделал сравнение. Почему-то при том, что между нативными версиями С и С++ разница практически нет, разница между pybind11 и ctypes/cffi ощутимая. Понятно, что при использовании через Python скорость это не самое главное, потому и забыл я про это после эксперимента. Но время от времени я вспоминаю и любопытство гложет. Сам нагуглить я не смог в чём кардинальная разница между pybind11 и cffi/ctypes. Может кто знает?
З.Ы. часто сталкивался в интернете с рекомендацией использовать cython для связки с С библиотеками как самый быстрый способ. Если с cffi/ctypes накидать обвязку было делом простым – накидать несколько строк по аналогии с примерами в мануале, то с cython я мучался несколько дней. А в итоге производительность оказалось куда ниже, чем с cffi/ctypes. Может здесь что-то не так сделал. Так что за советы по cython тоже скажу спасибо.
c, c++, ctypes, cython, python