gpt4 book ai didi

python - python 中的 for 循环比 matlab 慢 10 倍

转载 作者:太空狗 更新时间:2023-10-30 00:30:03 25 4
gpt4 key购买 nike

我在同一台机器上运行 python 2.7 和 matlab R2010a,什么都不做,速度相差 10 倍

网上查了一下,听说应该是一样的顺序。Python将进一步减慢for循环中的if语句和数学运算符

我的问题:这是现实吗?还是有其他方法让他们以相同的速度排序?


这是python代码

import time

start_time = time.time()

for r in xrange(1000):

for c in xrange(1000):

continue

elapsed_time = time.time() - start_time

print 'time cost = ',elapsed_time

输出:时间成本 = 0.0377440452576

这是matlab代码

tic

for i = 1:1000

for j = 1:1000

end

end

toc

输出:转义时间为 0.004200 秒

最佳答案

发生这种情况的原因与 JIT 有关。编译器,它正在优化 MATLAB for 循环。您可以使用 feature accel offfeature accel on 禁用/启用 JIT 加速器。当您禁用加速器时,时间会发生巨大变化。

启用加速的 MATLAB:耗时为 0.009407 秒。

关闭加速的 MATLAB:运行时间为 0.287955 秒。

python: 时间成本 = 0.0511920452118

因此,JIT 加速器直接导致您注意到的加速。您还应该考虑另一件事,这与您定义迭代索引的方式有关。在这两种情况下,MATLAB 和 python,您都使用迭代器来定义循环。在 MATLAB 中,您通过添加方括号 ([]) 创建实际值,而在 Python 中,您使用 range 而不是 xrange。当您进行这些更改时

% MATLAB
for i = [1:1000]
for j = [1:1000]

# python
for r in range(1000):
for c in range(1000):

时代变得

启用加速的 MATLAB:运行时间为 0.338701 秒。

关闭加速的 MATLAB:运行时间为 0.289220 秒。

python: 时间成本 = 0.0606048107147

最后一个考虑因素是您是否要向循环添加快速计算。即 t=t+1。那么时代就变成了

启用加速的 MATLAB:耗时为 1.340830 秒。

关闭加速的 MATLAB:运行时间为 0.905956 秒。(关闭加速更快)

python: 时间成本 = 0.147221088409

我认为这里的寓意是,开箱即用的 for 循环的计算速度与极其简单的循环相当,具体取决于情况。然而,python 中还有其他数值工具可以显着加快速度,目前已经推出了 numpy 和 PyPy。

关于python - python 中的 for 循环比 matlab 慢 10 倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17242684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com