4

パフォーマンスがかなり重要なPythonプロジェクトがあります。正直なところ、Python(少なくとも純粋なPython)はこの仕事に最適なツールではないことはわかっていますが、調査コードの非常に単純な純粋なPythonバージョンを配布して、人々が変更できるようにしたいので、とにかくそれを使用しています。複雑な環境を設定することなく、など。(Dで記述された代替の実装もあります。これははるかに高速ですが、ハッキングが困難です。)

私はインタプリタとしてPyPyを使用していて、このコードを使用する人にはPyPyを推奨していました。これは私に適度なスピードを与えていました。次に、アルゴリズムを微調整することにし、SciPyからいくつかの関数にアクセスする必要がありました(必要なのは、カイ2乗分布のCDF、生存関数、および逆CDFだけです)。コードをCPythonで実行して、SciPyにアクセスしようとしましたが、糖蜜のように遅いです。

誰かが3つのことの1つを提案できますか?

  1. PyPyのSciPyの一部を使用できるようにするための応急修理。

  2. さらに良いことに、リベラルなライセンスの下で、必要なカイ二乗分布関数の純粋なPython実装はありますか?

  3. CPythonのボトルネックをJITする方法は?Psycoについては知っていますが、メンテナンスされていないようで、32ビットシステムでのみ動作します。

4

1 に答える 1

5

SciPy はまだ PyPy では動作しませんが、ナイトリーを使用し、わずかな調整を行って numpy のサポートされているサブセットのみを使用する場合 (とにかく急速に拡張します)、比較的すぐに動作するようにするためのいくつかの作業があります。時間が急いでいる場合は、とりあえず SciPy 関数を Python に移植してみることをお勧めします (比較的単純なはずですが、それでも機能します)。これをさらに早く実現するために、PyPy の Web サイトで資金調達が活発に行われています :)

編集: これは、CPython を埋め込むことによって pypy で実行される matplotlib です: http://baroquesoftware.com/~fijal/extreme_hacks.png

EDIT2:例としてhttp://morepypy.blogspot.com/2011/12/plotting-using-matplotlib-from-pypy.htmlを読んでください。

乾杯、フィハル

于 2011-12-07T20:17:43.263 に答える