本地变量与属性节点的差异和使用
本地变量:建立本地变量实质就是对“控制器”/“指示器”中数据进行复制(copy),所以要占用内存,当为数组建立多个本地变量时,会占用大量的内存。操作行为是读数据(Read)或写数据(Write)
属性节点:建立属性节点实质上是对“控制器”/“指示器”中数据进行查询或置入,不会占用内存。因为在部件创建时已经为此参数分配好了内存,多少有些像VB中的属性设置。操作行为是查询(Query)数据或置入(Set)数据。本地变量:由于本地变量是对内存操作,所以运行速度很快。
属性节点:相对于本地变量来讲,属性节点的效率是很低的,或者说更占用CPU的资源。
在程序框图中,本地变量或属性节点无须与control(控制器)/indicator(指示器)直接连线就可用来传递“控制器”/“指示器”中的数值。实际上,虽然它们从传递数值这个特性上有相同之处,但本质上还有许多不同的地方,只有充分了解它们之间的差异,才能有效、合理的在程序中使用它们。
下面通过两个测试图来进一步说明二者之间的差异。在图1中,我们使用一个for循环对Numeric的本地变量写10000次数据,并测量运行的时间,探针[1]显示出程序运行时间是:4mS。

然后,我们将图1中的本地变量换成一个属性节点,见图2。
我们会看到10000次的操作运行时间是:2472mS。

由此可见,在数据频繁操作时属性节点的效率是很低的,或者说更占用CPU的资源。
本地变量:容易导致数据竞争,很多LabVIEW的书籍都介绍了这方面的例子。原因是本地变量破坏了数据流的工作方式。这也正是LabVIEW及许多书籍中强调的“慎用”本地变量的原因。
属性节点:可以通过“错误簇”来引导数据流,所以不会发生数据竞争现象。注意,当属性节点的错误簇没有使用(与其它vi相互连接),同样可能会导致数据竞争现象发生。
受教了
oooo哦几年级
学习了
lz伟大啊
受教了!
学习了
学习了
好像听懂了
可是不用局部变量,很多数据不知道怎么传递呀,
学习了
了解了解了
用什么还是要看实际情况的。
小程序内部用用局部变量还是可以的。
谢谢小编
恩 学习了
数据竞争还是不是很明白
太好了,受教
学习额!
这个问题,总是让我很懊恼~~
原来如此,请问本地节点、再第二次运行同一个程序是,节点变量如何清除,它是保留了前一次运行后的数据的
学习了。
多学一下
学习了,多谢
学习了
犀利了~~~~~~~~~~~~~~~~~~~
数据竞争是怎么回事啊
学习到了
小编讲的很仔细,点赞
数据竞争会出现什么情况呢?
谢谢 棒棒的 我也要加油
谢谢,好好学习一下。
