Встраивает ли С++-код в python ваше приложение python быстрее?
Встраивает ли С++-код в python с использованием ctypes, boost.python и т.д. быстрее делает ваше приложение python?
Предположим, что я делаю приложение в pygtk, и мне нужны некоторые функции, которые должны быть быстрыми. Так что, если я использую С++ для определенных задач в моем приложении, это будет полезно?
И какие другие возможности сделать код python быстрее?
Ответы
Ответ 1
Переназначение важнейших компонентов вашего кода на С++ может быть одним из вариантов. Чтобы сделать это эффективно, сначала вам нужно понять, где узкие места. Лучший способ сделать это - это, вероятно, сначала написать все в чистом Python, а затем в профиле.
Другим вариантом может быть использование PyPy
.
Наконец, если вы обнаружите, что узким местом являются численные вычисления, то NumPy
стоит посмотреть.
Стоит отметить, что если, например, окажется, что ваш код связан с I/O, ни один из вышеперечисленных вариантов не будет иметь большой поддержки.
Ответ 2
Это зависит, нет окончательного ответа. Если вы пишете плохой код на С++, он может быть еще медленнее, чем хорошо написанный код Python.
Предполагая, что вы можете написать хороший код на С++, вы можете ожидать ускорения до 20x в критичных для производительности частях.
Как говорится в другом ответе, NumPy - хороший вариант для числовых узких мест (если вы думаете в матричных операциях, а не в циклах!); и SciPy поставляется с ткачиком, что позволяет встраивать встроенные С++ и другие лакомства.