5

使用矢量化来代替 for 循环可以显着提高 Matlab 程序的速度。是因为矢量化代码是并行运行的吗?

矢量化是否也有利于使用 NumPy 或 uBLAS 的程序?

4

2 回答 2

8

“矢量化”代码在 Matlab 和 numpy 等解释环境中通常更快,因为矢量化版本通常(但不总是)运行用 C 或 FORTRAN 编写的预编译和优化代码。并行执行可能会或可能不会在其中发挥作用。

由于这个原因,在 numpy 中使用矢量化通常会提高性能 - 通常例程是编译为 C 或 FORTRAN,它们的运行速度比必须在解释器上运行的本机 python 代码快得多。此外,主要用 C 编写的 numpy 可以回避 python 全局解释器锁,这可以大大提高使用线程的 python 代码的响应能力。

于 2011-05-16T09:25:28.877 回答
2

我认为使向量化更快的部分原因是它减少了与多个函数调用相关的开销。将向量传递给函数对应于单个调用,而将该向量的每个元素单独传递给函数对应于多个调用。

于 2011-05-16T09:51:44.860 回答