【发布时间】:2013-06-19 00:34:56
【问题描述】:
我在同一台机器上运行 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
Output: time cost = 0.0377440452576
这是matlab代码
tic
for i = 1:1000
for j = 1:1000
end
end
toc
Output: Escaped time is 0.004200 seconds
【问题讨论】:
-
如果编译器优化器有什么不同的话,我也不是,但是您是否尝试通过而不是继续?也许如果你添加一个非常基本的计算,
t = t+1那么它会改变。 -
用
python -m timeit测试循环表明使用pass比continue慢一点,但不是很明显。在我的机器上,循环需要 16 毫秒,不到 OP 声称的一半。另请注意,MATLAB 有一个JIT,因此尤其是使用简单循环时会出现这种差异。 -
可能值得在循环中加入一些东西,以防万一 Matlab 足够聪明地意识到循环实际上并没有做任何事情,并且已经优化了它们。
-
@Bakuriu 感谢您发布该链接。我没有读过它,但它的内容非常丰富。我已经更新了我的答案来解决这个问题。