考虑以下Pythonic片段“timing.py”:
import numpy as np
def exponentials(n_, x_):
n_exp = np.arange(0,n_,1)
y_exp = np.zeros(n_)
y_exp[:] = np.exp(-x_*n_exp[:])
def powers(n_, x_):
n_exp = np.arange(0,n_,1)
y_exp = np.zeros(n_)
expbase = np.exp(-x_)
y_exp = expbase**n_exp
现在考虑以下时间结果
In [1]: import timing
In [2]: %timeit timing.exponentials(1e3, 1.1)
100000 loops, best of 3: 14 µs per loop
In [3]: %timeit timing.powers(1e3, 1.1)
10000 loops, best of 3: 27.5 µs per loop
我本来期望一次评估指数函数,然后做多项式比指数函数评估10 ^ 3倍要快得多。充其量,我希望它们具有可比性。有没有人对这里发生的事情有任何见解?
如果重要的话,这是带有Python 2.7.10的NumPy 1.9.2版。