2017-12-01 10 views
1

私はnumbaモジュールを使用してスクリプトをスピードアップしようとしています。しかし、私がスクリプトを実行するたびに、numbaは私のクラスのいくつかをコンパイルします(私は@jitclassを使用します)。スクリプトを実行するたびにコンパイルに時間がかかることを避けるために、クラスが変更されないことを知っているクラスをコンパイルすることが可能かどうかは疑問です。私はnumbaを約1分かかるクラスのダースで使います。スクリプトを実行する前にnumbaでコードをコンパイルすることはできますか?

私はコードをコンパイルする前に、numbaで見てきましたが、私はよく分かりません。 link しかし、私はjitclassを使っているので、私はそれを使うことはできません。

答えて

2

私が知っている限り(numbaの現在のリリース:0.36)、jitclassを先読みコンパイル(AOT)で使用することはできません。

あなたの質問から、あなたのコードにどのくらいの時間が費やされているのかは不明です。極端な1分と思われますが、私は通常、一度にいくつかのjitclassesを使用しました。私は、数多くのモジュールにまたがって数十種類の相互依存関数を使用してきましたが、コンパイル時間はほんの数秒しかかかりませんでした。

初めてコードを実行するのにかかる時間とそれ以降の時間を比較することができれば、ランタイムが確定的であると仮定してコンパイル時間にする必要があります。

ジャストインタイムコンパイルの起動コストが実用的でない場合は、おそらくCythonを使用してC-extensionsを書き込むことをお勧めします。欠点は、nopythonモードのnumbaコードからそれらを使用できないことです。助けてくれるあなたのデータ構造を整理する良い方法がたくさんありますが、コードを見ずに分かりにくいです。

+0

あまりにも悪いです。 numbaを使用しないときは、コードを実行した後にウィンドウが表示されますが、numbaを使用すると、各jitclassはコンパイルに約6秒かかります。だから私は窓が開くのを待っているところで終わります。今はウィンドウにアクセスするために新しいスレッドでjitclassを起動します。 – ymmx

関連する問題