gpt4 book ai didi

matlab - 为什么矢量化代码比 MATLAB 中的循环运行得更快?

转载 作者:太空宇宙 更新时间:2023-11-03 19:07:06 25 4
gpt4 key购买 nike

我读过 this但我仍然不明白为什么矢量化代码更快。

在 for 循环中,我可以使用 parfor 来进行并行计算。如果矢量化代码更快,是否意味着它自动并行化了?

最佳答案

没有。您正在混合两个重要概念:

  • MATLAB 旨在非常快速地执行矢量运算。 MATLAB 是一种解释型语言,这就是其中循环如此缓慢的原因。 MATLAB 通过提供极其快速(通常用 C 语言编写,并针对特定体系结构进行了优化)和经过良好测试的函数来对向量进行运算,从而回避了这个问题。这里真的没有魔法,它只是一堆艰苦的工作和多年不断的小改进。

例如考虑一个简单的案例,如下所示:

s=0;
for i=1:length(v),
s = s+v(i);
end

sum(v)

您可能应该使用 tic 和 toc 对这两个函数进行计时,以使自己了解运行时的差异。大约有 10 个类似的对向量进行操作的常用函数,例如:bsxfunrepmatlengthfind。矢量化是有效使用 MATLAB 的标准部分。在您能够有效地矢量化代码之前,您只是 MATLAB 世界的游客,而不是公民。

  • 最新版本的 MATLAB 提供了 parfor。 parfor 不是 Elixir ,它是一个可以使用和滥用的工具(在上面的求和示例中尝试 parfor)。不是所有的fors都可以parfored。 parfor 专为任务并行类型的问题而设计,其中循环的每次迭代都独立于其他迭代。这是使用 parfor 循环的关键要求。

虽然在许多情况下 parfor 可以提供很多帮助,但很少会出现可以通过 parfor 获得非常大 yield 的循环类型。

关于matlab - 为什么矢量化代码比 MATLAB 中的循环运行得更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14035365/

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