是否比n-m-Array上的linewise迭代更快?

时间:2015-09-02 18:30:27

标签: arrays performance opencv iteration labview

我将有这个LABVIEW程序,我必须迭代大型数组(而不是队列),因此我有兴趣尽可能加快它们的速度。

我想我听过OpenCV,在读取元素时,提取此元素的页面包含以下列元素。这意味着如果我为每个元素按行迭代,我必须再次加载一个新页面,这显然会减慢整个过程。

这是否也适用于LABVIEW程序?

感谢您的支持和亲切的问候

3 个答案:

答案 0 :(得分:2)

LabVIEW是行专业。如果您使用2D数组并将其连接到For循环的边界以进行自动索引,则您获得的1D数组就是行。将其连接到嵌套的For循环中以处理各个元素。

答案 1 :(得分:2)

我对此进行了基准测试。 我有100000x5 2D阵列。通过首先迭代行,我的i7处理器需要9毫秒才能完成。按列迭代首先需要35毫秒才能完成。

enter image description here

答案 2 :(得分:1)

除了行 - 列 - 列迭代之外,还有两种技术可用于最大化数组处理:

  1. Pipelining - 有助于最大限度地提高顺序任务的核心利用率
  2. Parallel For loops - 提供数据并行性
  3. 之后,还有其他更复杂的设计,如结构化网格。有一篇NI白皮书更详细地描述了multi-core programming in LabVIEW,包括这些和其他方法。