【发布时间】:2019-07-19 12:55:38
【问题描述】:
我的 python 代码运行大约需要 6.2 秒。 Matlab 代码在 0.05 秒内运行。为什么会这样,我能做些什么来加快 Python 代码的速度? Cython 是解决方案吗?
Matlab:
function X=Test
nIter=1000000;
Step=.001;
X0=1;
X=zeros(1,nIter+1); X(1)=X0;
tic
for i=1:nIter
X(i+1)=X(i)+Step*(X(i)^2*cos(i*Step+X(i)));
end
toc
figure(1) plot(0:nIter,X)
Python:
nIter = 1000000
Step = .001
x = np.zeros(1+nIter)
x[0] = 1
start = time.time()
for i in range(1,1+nIter):
x[i] = x[i-1] + Step*x[i-1]**2*np.cos(Step*(i-1)+x[i-1])
end = time.time()
print(end - start)
【问题讨论】:
-
我认为这有点不同,因为我正在集成。虽然也许我弄错了......此外,我最终希望在每一步都有多个数组相互交互。例如,也许还有另一个数组,y,并且时间 t 的 x 不仅是时间 t-1 的 x 的函数,而且也是时间 t-1 的 y 的函数。
-
stackoverflow.com/q/2133031/7517724 的答案可能会有所帮助。
-
stackoverflow.com/q/30475410/7517724 的答案也很相关。
-
Python/numpy 就像一个旧的 MATLAB - 使用
whole-array操作速度快,解释迭代速度慢。现在 MATLAB 进行了大量的 jit 编译,让您摆脱过去太慢的迭代内容。 -
未标记为重复项 - 这不是将函数映射到数组上,而是执行迭代计算,其中每个元素都依赖于最后一个元素
标签: python matlab numpy numerical-integration