画像処理作業を行う Python コードをいくつか書きましたが、実行に膨大な時間がかかります。ここ数時間を最適化に費やしましたが、私の能力は限界に達したと思います。
プロファイラーからの出力を見ると、以下の関数がコード全体の時間の大部分を占めています。高速化できる方法はありますか?
def make_ellipse(x, x0, y, y0, theta, a, b):
c = np.cos(theta)
s = np.sin(theta)
a2 = a**2
b2 = b**2
xnew = x - x0
ynew = y - y0
ellipse = (xnew * c + ynew * s)**2/a2 + (xnew * s - ynew * c)**2/b2 <= 1
return ellipse
コンテキストを提供するために、かなり大きなグリッド サイズで および からの出力として呼び出され、他のすべてのパラメーターは単純な整数値としてx
呼び出さy
れます。np.meshgrid
その関数には多くの時間がかかっているように見えますが、おそらくコードの残りの部分も高速化できる方法があります。残りのコードはこの要点にまとめました。
どんなアイデアでもありがたく受け取られます。numba を使用して主要な機能を試してみましautojit
たが、あまり役に立ちません。