У меня есть простой план для моей программы: все синтаксический анализ и предварительная обработка данных с помощью Python, а затем передайте много структур и вызовите функцию ONCE number-crunching, которую я собираюсь записать на C Вот мой вопрос: что будет быстрее (с точки зрения скорости выполнения)? Чтобы вызвать функцию C с помощью ctypes или записать ее с помощью cython?cython vs ctypes функция скорость выполнения
ответ
Учитывая бесконечное количество времени для оптимизации кода, Ctypes, вероятно, будет быстрее, поскольку вы можете максимально увеличить тяжелый подъем в скомпилированный код.
cython принимает код, подобный питону, и преобразует его в код C с множеством оговорок и исключений. Если бы cython был совершенным, это было бы так же быстро, как кодирование в C-API для python. cython - фантастический инструмент для быстрого создания кода, но пока не совсем совершенен.
Cтипы потребуют некоторых манипуляций с вашими входными переменными, чтобы получить их на C чисто. Это может быть не проблема, если вы все равно выполняете честную обработку данных.
Как обычно, вам необходимо решить, насколько важна скорость выполнения сравнения с временем повторного использования кода/кода/повторного использования кода , мне показалось странным, что меня интересует только скорость выполнения и все еще хочет закодировать любой из них в питон.
И наоборот, общие парадигмы кодирования питона бы, как правило, контрастируют с имеющей большими участками кода C удерживаемого вместе питон обертками
- 1. Скорость Cython vs numpy
- 2. Cython + ctypes?
- 3. ctypes vs pure python
- 4. C# Скорость выполнения: равно (==) vs not equal (! =)
- 5. ctypes pure python vs ctypes django
- 6. Javascript: Функция конструктора vs Скорость инициализатора объекта
- 7. Cython: функция ctypedef?
- 8. Функция накопления cython numpy
- 9. Сравнение производительности Cython VS C++?
- 10. Cython vs numpy performance scaling
- 11. cython компиляция - импорт vs cimport
- 12. Передача функции cython vs метода cython для scipy.integrate
- 13. ctypes указатель на c_int vs массив c_ints
- 14. Скорость выполнения запросов PostgreSQL 8.1 vs PostgreSQL 9.2
- 15. Скорость urllib.urlretrieve vs urllib.urlopen
- 16. Сравнение scipy.stats.t.sf vs GSL с использованием Cython
- 17. Скорость выполнения Java
- 18. Скорость выполнения программы C
- 19. скорость выполнения теста webdriver
- 20. Обтекание библиотеки C в Python: C, Cython или ctypes?
- 21. ctypes, pyrex, swig или cython для этой проблемы?
- 22. Улучшить скорость передачи данных с Python на C (++) через ctypes
- 23. Функция ускорения с использованием cython
- 24. Скорость PySpark Ubuntu vs Windows
- 25. Собственная скорость мобильной файловой системы VS VS
- 26. Bakeoff Part 1 Python vs Cython vs Cython Типированные виды памяти: LDA by Gibbs Sampling
- 27. Скорость разработки - Asp.net vs Silverlight
- 28. Скорость переброса флагов vs booleans?
- 29. Array vs Slice: скорость доступа
- 30. Absolute vs Относительная скорость связи
Использования Cython против ctypes вызвать одну функцию C один раз, которое существенно не отличается. Это более интересно, если вы напишете функцию в Cython, добавив достаточно статической типизации, чтобы заставить ее работать хорошо. Это может быть не так быстро, но версия Cython более читаема, чем C, и ее проще поддерживать. – eryksun
Это зависит также от точного кода, который вы хотите вызвать. У меня есть проблема с тем, что cython не быстрее моего питона (думаю, у меня есть больше трюков, чтобы учиться), поэтому они просто используют ctypes для такого рода вещей. Однако для большого класса проблем обычные нормальные операции с numpy-вектором почти такие же быстрые, как с использованием cython или ctypes, поэтому сначала посмотрите там, где это проще всего. –