web-dev-qa-db-ja.com

冗長な計算の削減

私はジレンマを経験しています。 2つの関数で説明します。

# Takes vector.magnitude(), vector.x, vector.y and uses it somewhere
def func1(vector, {other parameters 1}):
    pass

# Takes vector.magnitude(), vector.x, vector.y and uses it somewhere
def func2(vector, {other parameters 2}):

func2が同じvector変数でfunc1の直後に呼び出されることは珍しいことではありません。ベクトルの大きさは2回計算されるため、冗長な計算が行われます。代わりに、ベクトルの大きさを個別の関数パラメーターにする必要がありますか?そうでない場合、この問題を軽減するために何を変更する必要がありますか?

3
andrewgazelka

ベクトルの大きさの計算は、vectorクラスのメソッドである必要があります。次に、必要に応じて、または推奨される場合に、結果をキャッシュして再利用できます。上位レベルのロジックにこのようなマイクロ決定を課すと、読みにくくなります。

8
Kilian Foth