【发布时间】:2011-05-16 17:51:44
【问题描述】:
使用向量化代替 for 循环可能会显着提高 Matlab 程序的速度。是因为向量化的代码是并行运行的吗?
矢量化是否也有利于使用 NumPy 或 uBLAS 的程序?
【问题讨论】:
标签: matlab boost numpy vectorization ublas
使用向量化代替 for 循环可能会显着提高 Matlab 程序的速度。是因为向量化的代码是并行运行的吗?
矢量化是否也有利于使用 NumPy 或 uBLAS 的程序?
【问题讨论】:
标签: matlab boost numpy vectorization ublas
“矢量化”代码在 Matlab 和 numpy 等解释环境中通常更快,因为矢量化版本通常(但不总是)运行用 C 或 FORTRAN 编写的预编译和优化代码。并行执行可能会或可能不会在其中发挥作用。
由于这个原因,在 numpy 中使用向量化通常会提高性能 - 通常例程是编译为 C 或 FORTRAN,它们的运行速度比必须在解释器上运行的本机 python 代码快得多。此外,主要用 C 语言编写的 numpy 可以回避 python 全局解释器锁,这可以大大提高使用线程的 python 代码的响应能力。
【讨论】:
我认为向量化更快的部分原因在于它减少了与多个函数调用相关的开销。将向量传递给函数对应于一次调用,而将该向量的每个元素单独传递给函数对应于多次调用。
【讨论】: