1
私は異なる方法で関数を作成するときに表示される速度の違いを理解する理由を理解したいと思います。 私は、case(1)がcase(2)より高速である理由を理解することにほとんど関心があります。python速度合成関数
ありがとうございます!
import math
from time import time
def f(x):
return 2*x
def g(x):
return x*x
def h(x):
return math.sqrt(x)
time0 = time()
for x in range(1,10**7):
x_ = h(g(f(x)))
print 'h(g(f(x))): {}'.format(time() - time0)
def fgh(x):
return h(g(f(x)))
time0 = time()
for x in range(1,10**7):
x_ = fgh(x)
print 'composed: {}'.format(time() - time0)
time0 = time()
for x in range(1,10**7):
x_ = f(x)
x__ = g(x_)
x___ = h(x__)
print 'subsequent: {}'.format(time() - time0)
はランタイムとして、私は得る:手始めに
h(g(f(x))): 2.83475399017
composed: 3.29999113083
subsequent: 3.4387819767
OK、私はそういうことを考えました。合成された関数のそれぞれがより複雑で時間のかかるものであれば、それらをどのように構成するのかは実行時には関係ありません。 (例2の追加の関数呼び出しは無視できる程度になります) – Aplln
一般的なケースでは、関数に依存します - 合成順序が重要な状況があるかもしれません(例えば:大きな行列の乗算を構成する場合)。あなたの例ではそれほど重要ではないかもしれませんが、平方根を取るなどの操作はより大きい数値の方が遅くなると想定できるので、最後に残すと少し遅くなります –