为什么矢量化对 Matlab 程序有益?NumPy和Boost(uBLAS)是否相同



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

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

"

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

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

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

最新更新