1

約1秒で実行されるpythonプログラムがあります。pypy で実行すると、約 2 秒かかります。ただし、プログラムを変更すると

import sys
from code import execute
if __main__:
    execute(sys.argv)

import sys
from code import execute
if __main__:
    for i in range(100):
        print i
        execute(sys.argv)

pypy がどのように「学習」しているかを実際に確認できます。最初の実行には約 2 秒かかり、実行はどんどん速くなり、最終的には約 0.15 秒かかります。

最初の実行に 0.15 かかるように、pypy にその最適化学習を「記憶」させることはできますか? 私のアプリケーションは関数executeの多くのスタンドアロン実行を実行するため、今ではpypyの恩恵を受けることはできません。

4

1 に答える 1

2

いいえ、それは基本的にできません。

可能なことは、回避策を使用して必要な結果を取得することです。たとえば、プログラムをローカルの「サーバー」に変えて、(5 行のスクリプトを実行して) 要求を待機し、execute(). これは確かに最も洗練されたソリューションではありませんがexecute()、同じプロセスですべてを実行でき、(しばらくすると) 測定したのと同じスピードアップが得られます。

于 2013-07-04T16:11:52.207 に答える