首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python与Matlab的循环性能比较

Python与Matlab的循环性能比较
EN

Stack Overflow用户
提问于 2019-06-28 10:38:56
回答 1查看 1.3K关注 0票数 0

在Python和Matlab上,代码的矢量化版本都相当快。但是,有时我必须使用(for)循环。在这些情况下,Python循环非常慢。为什么是这样呢?

在下面的代码中,很明显,矢量化版本的运行方式是相似的。但Matlab中的for循环版本相当不错,而Python版本则非常慢。

Python代码

代码语言:javascript
复制
import numpy as np
import time

N = 10000000

a = np.random.random(N)
b = np.random.random(N)

#vectorized
start_time = time.time()
c = np.dot(a,b)
print(c)
print("--- %s msec ---" % (time.time() - start_time))

#non-vectorized
start_time = time.time()
c = 0
for ii in range(N):
    c = c + a[ii]*b[ii]
print(c)
print("--- %s msec ---" % (time.time() - start_time))

Matlab代码

代码语言:javascript
复制
N = 10000000;

a = rand(N, 1);
b = rand(N, 1);

tic
c = dot(a, b);
disp(c);
toc

tic
c = 0;
for ii = 1:N
 c = c + a(ii) * b(ii);
end
disp(c)
toc

Python输出:

代码语言:javascript
复制
2500596.6897313246
--- 0.008107662200927734 sec ---
2500596.689731018
--- 3.6871590614318848 sec ---

Matlab输出:

代码语言:javascript
复制
2.4997e+06
Elapsed time is 0.027503 seconds.

2.4997+06
Elapsed time is 0.032014 seconds.

虽然Python矢量化版本稍微快一些,但for循环版本非常慢。

对于Python中更快的循环,有什么解决方法吗?

EN

回答 1

Stack Overflow用户

发布于 2019-06-28 13:04:01

与Java进行类似的for循环比较的方法是HERE。在python和(优化的) python包中使用for循环的解释可能很有见地。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56800305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档