1
我想了解为什么我得到我以不同的方式编写功能时看到的速度差异。 我最感兴趣的是理解为什么情况(1)比情况(2)快。蟒蛇的速度组成功能
谢谢!
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
好吧,我以为是这样的。公平地说,如果每个组合函数都更加复杂和耗时,那么对于运行时我怎样编写它们并不重要? (即例2中的附加函数调用变得可以忽略) – Aplln
对于一般情况,它取决于函数 - 可能存在组合顺序_does_问题的情况(例如:当组成大矩阵的乘法时)。对于你的例子来说,这可能并不重要,但可以假定像大数字这样的平方根操作会比较慢,所以如果我们把它留到最后,它会稍微慢一些 –