在使用Python 3的工程中的数值方法,作者:Jaan Kiusalaas,第25页,作者用两种方式解决了求和表达式:
第一种方法:使用循环。
第二种方法:通过从numpy导入范围来实现矢量化版本。
作者指出"矢量化算法执行得更快,但使用更多内存。" 任何人都可以解释矢量化算法的含义,为什么矢量化算法执行得更快,但使用更多内存?
答案 0 :(得分:2)
矢量" (简化)是重写循环的过程,这样它不是处理数组的单个元素N次,而是同时处理(比如说)数组的4个元素N / 4次。 [What is “vectorization”?]
矢量化代码更快,因为多个 操作并行执行。 相反,在循环版本中,这些< strong> 操作按顺序执行, 。
矢量化代码使用更多内存,因为必须加载 所有操作的数据 ,它们是并行执行的进入记忆。相反,对于循环版本,只需要加载 一个操作的数据 (当前已执行)。
这是计算机科学中的典型权衡,称为Space–time tradeoff。