在 LabVIEW 中将常量添加到数组列的最有效方法?
Most efficient way to add a constant to a column of an array in LabVIEW?
我想向数组的第二列添加一个常量。
我这样做如下所示:
为了说明,值如下:
向数组列添加常量的最有效方法是什么?
Index Array 获取第二列,添加你的常量,然后Replace Array Subset 来替换第二列。
关于效率的问题你应该提供数字。对于低于 1000 x 1000 二维阵列的任何东西,我无法测量差异。通常最好简单地测试一下。
这里是测试代码(与crossrulz相同的答案)
对于 10000 x 10000 阵列,选项 2 的速度提高了大约 10 倍。
一个评论,除非您处于要求非常高的情况下,否则可读性通常比效率更重要。在我看来,选项 2 更具可读性,因为它没有 for 循环并且常量显示为常量而不是数组。
但是使用元素就地结构可以获得比这更高的效率。下图显示了将 5 添加到列的两种不同方法。第二个避免制作整个数组的内存副本。使用 Index Array 索引出一个数组的列然后修改它需要底层内存格式的转换,即使该数组将被放回 Replace Array Subset 中。 In Place Element 结构为 LabVIEW 提供了足够的上下文,使其能够识别无需数据副本即可完成添加。
我想向数组的第二列添加一个常量。
我这样做如下所示:
为了说明,值如下:
向数组列添加常量的最有效方法是什么?
Index Array 获取第二列,添加你的常量,然后Replace Array Subset 来替换第二列。
关于效率的问题你应该提供数字。对于低于 1000 x 1000 二维阵列的任何东西,我无法测量差异。通常最好简单地测试一下。
这里是测试代码(与crossrulz相同的答案)
对于 10000 x 10000 阵列,选项 2 的速度提高了大约 10 倍。
一个评论,除非您处于要求非常高的情况下,否则可读性通常比效率更重要。在我看来,选项 2 更具可读性,因为它没有 for 循环并且常量显示为常量而不是数组。
但是使用元素就地结构可以获得比这更高的效率。下图显示了将 5 添加到列的两种不同方法。第二个避免制作整个数组的内存副本。使用 Index Array 索引出一个数组的列然后修改它需要底层内存格式的转换,即使该数组将被放回 Replace Array Subset 中。 In Place Element 结构为 LabVIEW 提供了足够的上下文,使其能够识别无需数据副本即可完成添加。