【发布时间】:2013-12-03 10:44:21
【问题描述】:
我正在测试 Python 与 Matlab 相比的速度。我决定转向 Python 是因为它有很多优势,但我想比较一下速度,看看在这方面有什么不同。
我测试了一些 for 循环来填充 1000 x 1000 矩阵,如下所示:
from numpy import *
sizeM = 1000
y = zeros((sizeM,sizeM))
x = 4
tic = time.clock()
for i in range(sizeM):
for j in range(sizeM):
y[i,j] = cos(i*j) + i * sin(x**2);
toc = time.clock()
time = toc-tic
time 以这种方式为 5.93 秒。但在 Matlab 中,使用以下代码只需要 0.11 秒:
tic
sizeM = 1000;
y = zeros(sizeM);
x =4;
for i = 1:sizeM
for j = 1:sizeM
y(i,j) = cos(i*j) + i * sin(x^2);
end
end
toc
我的问题是:
是这样吗?
Matlab 在执行嵌套 for 循环时是否比 Python 快?还是我在这里做错了什么?
感谢您的帮助。
【问题讨论】:
-
一般来说,速度增益不足以从 matlab 迁移到 python。 -- 另请注意,在 matlab 代码中,您实际上初始化了大矩阵,而在 python 代码中,这超出了时间范围。 -- 此外,向量化 matlab 操作可能会更快。
-
我完全同意你的看法。由于许多其他争论,我已经决定转向 python,这只是我想测试的一件事。
-
为什么您没有得出结论 Python 在计算三角表达式时比 Matlab 慢?这似乎至少与您的测试得出的结论一样合理。
-
这不一定是真的。我用三角表达式测试了其他一些没有嵌套循环的代码,在某些情况下 python 更快......
-
您还应该使用
xrange而不是range。使用range,您将在内存中为每个循环显式创建sizeM元素列表,这对内部循环尤其不利。 MATLAB 没有为基本语法for i=1:N执行此操作
标签: python performance matlab python-2.7 numpy