2017-02-15 23 views
1

私のコードでは、多くのPellの方程式を素早く解く必要があります。 sympy 1.0とpython 3.5だけを使用して、diop_DN(q, 1)を呼び出すと、約60回/秒で実行されます。私はdiop_DNソルバーのsource codeを見ました。それは純粋なpythonで書かれているようです。だから私はsympy 1.0でpypy 5.1.2(python 2.7.10)でコードを実行しようとしましたが、私の驚いたことに約2倍遅く実行されます。ppyyでsympyを使用すると速度が向上しない

これが期待どおりの動作ですか?純粋なPythonを素早く動かすことはできませんか?

答えて

1

あなたは、ウォームアップのためにPyPyに十分な時間を与えていない可能性があります。ループ内でdiop_DN(13, -4)を実行すると、50回以上の反復処理が必要ですが、漸近時間はCPythonより約5倍高速です。実際のコードのように、同じ引数ですべての呼び出しを行っていない場合は、ウォームアップに少しでも時間がかかることがあります。 (PyPy 5.6で測定された時間は、古いPyPy 5.1ではウォームアップが少し長くなることもあります)

関連する問題