5

現在Pythonで記述されているシステムがあり、バックエンドレイヤーとフロントエンドレイヤーに分けることができます。Pythonは遅すぎるので、バックエンド機能をPythonから呼び出せるように、フロントエンドをPythonのままにして、高速コンパイル言語でバックエンドを書き直したいと思います。そうするための最良の選択は何ですか?

私はcythonを検討しましたが、書くのは非常に限られていて面倒で、それほど速くはありません。Boost Python for C ++について私が覚えていることから、言語間のブリッジを維持することは非常に面倒です。より良い選択肢はありますか?

私の主な要因は次のとおりです。

  • 実行速度
  • コンパイルの速度
  • 言語は宣言型です
4

3 に答える 3

7

SWIGを使用したC++は、必要なすべてのグルーコードを生成できます。C ++とPythonの間の過度のジャンプを回避する限り、C++と同じくらい高速になります。SWIGインターフェースは通常、「奇妙な」ことをしているのでない限り、生成するのはかなり簡単です。

于 2010-11-15T20:00:22.100 に答える
2

Jython を使用すると、Java バックエンド ルーチンを簡単に (簡単に) 呼び出すことができます。前回チェックしたとき、Java は c の約 2 倍遅く、Python よりも 10 倍高速でした。

于 2010-11-15T20:08:53.360 に答える
1

Boost::Pythonについては同意しません。既存のC++中心のライブラリをラップし、インターフェイスを変更しないようにしようとすると、面倒になる可能性があります。しかし、それはあなたがやろうとしていることではありません。

あなたは、既存のPythonソリューションの手間のかかる作業をより高速な言語にプッシュしようとしています。つまり、インターフェイスを制御できるということです。

インターフェイスを制御している場合は、Pythonとbpに対応したものを維持できます(つまり、ポインターや不変型などの問題のあるものをl値として回避します)

その場合、Boost :: Pythonは、Pythonから呼び出す関数を指定するのと同じくらい簡単です。

于 2010-11-19T16:59:34.690 に答える