0

実行にかなりの時間がかかる純粋な関数があるとしましょう。そして、主に、同じ引数でこの関数を複数回呼び出したいと思いました。

私の最終的な質問は、戻り値を変数に格納してそれを使用するか、関数を複数回呼び出すかです。計算量が少ないのはどちらの方法ですか?

現代の言語のコンパイラ (存在する場合) は、関数が純粋かどうかを判断できますか? はいの場合、コンパイラは同じブロック内の複数の呼び出しを最適化できますか? はいの場合、プレースホルダー変数を使用するよりも、それらの関数を呼び出す方が理にかなっています (名前の割り当て/バインディングを行う計算を無駄にするため)。

編集:ここに例があります

if myPureFunction(a,b) == 1:
    print(1)
elif myPureFunction(a,b) == 2:
    print(2)
elif myPureFunction(a,b) == 3:
    print(3)
else:
    print(4)

対。

var = myPureFunction(a,b) 
if var == 1:
    print(1)
elif var == 2:
    print(2)
elif var == 3:
    print(3)
else:
    print(4)

前もって感謝します。

4

2 に答える 2