Встраивает ли С++-код в python ваше приложение python быстрее?

Встраивает ли С++-код в python с использованием ctypes, boost.python и т.д. быстрее делает ваше приложение python?

Предположим, что я делаю приложение в pygtk, и мне нужны некоторые функции, которые должны быть быстрыми. Так что, если я использую С++ для определенных задач в моем приложении, это будет полезно?

И какие другие возможности сделать код python быстрее?

Ответ 1

Переназначение важнейших компонентов вашего кода на С++ может быть одним из вариантов. Чтобы сделать это эффективно, сначала вам нужно понять, где узкие места. Лучший способ сделать это - это, вероятно, сначала написать все в чистом Python, а затем в профиле.

Другим вариантом может быть использование PyPy.

Наконец, если вы обнаружите, что узким местом являются численные вычисления, то NumPy стоит посмотреть.

Стоит отметить, что если, например, окажется, что ваш код связан с I/O, ни один из вышеперечисленных вариантов не будет иметь большой поддержки.

Ответ 2

Это зависит, нет окончательного ответа. Если вы пишете плохой код на С++, он может быть еще медленнее, чем хорошо написанный код Python.

Предполагая, что вы можете написать хороший код на С++, вы можете ожидать ускорения до 20x в критичных для производительности частях.

Как говорится в другом ответе, NumPy - хороший вариант для числовых узких мест (если вы думаете в матричных операциях, а не в циклах!); и SciPy поставляется с ткачиком, что позволяет встраивать встроенные С++ и другие лакомства.