labview数据传递的对比

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

LabView中常用数据传递的比较

编写者:LabView交流与代做群(160910366)在LabView中数据的传递主要是以下几种

1.移位寄存器(功能性全局变量)

2.反馈节点

3.局部变量

4.属性节点值

5.其他(主要包括:全局变量,队列,共享变量等等,在这里不进行比较)

一.运行时间比较

很多人都喜欢用运行时间来判断一个程序的好坏,那么我们也进行一下比较来看看。

我们以自加一运行10万次看看运行时间。

1.移位寄存器(功能性全局变量)

2.反馈节点

3.局部变量

4.属性节点值

由上面我们可以看出各运算速度:移位寄存器 > 反馈节点 > 局部变量 >>

属性节点

二.数据传递模式

1.移位寄存器:数据流

2.反馈节点:数据流

3.局部变量:非数据流

4.属性节点值:非数据流

所有labview的书籍中,第一章肯定都会提到labview是数据流驱动的。如果你程序中使用了大量局部变量和属性节点,那么你的程序肯定违背了介绍中的这条信息,而破坏了数据流。

而且局部变量与属性节点较慢,这也奠定了局部变量与属性节点在labview中的地位,是用来扫尾工作的。

三.移位寄存器PK反馈节点

1.速度移位寄存器 > 反馈节点

2.数据流向:移位寄存器一般从左至右,反馈节点会逆流。(破坏了程序执行的

基本方向,如果文本语言中的至上而下,突然变成了自下而上,你想想会出现什么效果?)

这会使反馈节点的出错率大大大于移位寄存器的出错率。

3.易读性:移位寄存器 > 反馈节点

4.使用范围:移位寄存器整个循环中,反馈节点无法跨结构

下图反映出了反馈节点无法跨结构进行运算。

综上所述,在功能基本相同的情况下,移位寄存器的功能每项都超过反馈节点。

四.局部变量VS属性节点值

局部变量与属性节点值真是一对纠结的双生子,同样的功能,基本相同的创建方式。这似乎都反应出了存在一个就没必要存在另一个了。

在这有必要分别说明下局部变量与属性节点值。

局部变量:局部变量这名词我最先接触是在C语言中,但是C语言中的局部变量更加接近于移位寄存器。而labview中的局部变量只是将控件的值重新复制了一份而后调用它。

属性节点值:就要从属性节点说起。与属性节点相类似的还有调用节点。他们都起源于面向对象中,他们分别代表面向对象的属性和方法。在使用属性节点时,并没有进行复制操作,只是将控件中的值这部分抽离出来,所以执行效率低。1.运行效率

局部变量 > 属性节点

2.创建方便

局部变量 > 属性节点

局部变量右键创建就可以实现

属性节点则要麻烦一点

3.内存浪费

局部变量 > 属性节点

局部变量因为是重新复制该器件的值的,所以使用越多局部变量内存浪费越多。内存越多程序的效率也就越低。

4.易错性

局部变量 > 属性节点

就如下图如果你无意间写了相类似的程序,局部变量则会表现出非逻辑错误。图中的举例局部变量的错误十分明显,无法判断到底谁先执行。而属性节点可以利用错误簇的数据流,规定出先后执行的顺序。

5.灵活性

局部变量 < 属性节点值

前面说到属性节点来自面向对象中的属性。那么属性节点值当然也继承了面向对象的优点。利用他的引用,不仅能像全局变量一样再不同VI中传递数据。还能进行批量处理有规律的数据,达到更方便的编程。

局部变量与属性节点对比总结

从运行速度上看,局部变量的执行速度似乎是比属性节点快的。但是结合第三点局部变量浪费了大量的内存,尤其是鞋数据比较大的地方。例如:如果我有个10万个元素的数组,如果我们这时候运用局部变量,将会造成大量的内存流失。内存流失会间接导致程序的卡慢。

而且labview数据传递要以移位寄存器为主,所以局部变量与属性节点的执行速度并非太重要。一般初学者在局部变量与属性节点选择中,尽量选择属性节点。毕竟众多前辈所强调的东西,必定是用血与汗所换来的。

而局部变量又会导致非逻辑错误(编程里最可怕的错误),一般这总逻辑错误会使你在此浪费大量的时间与精力。所以你使用每个局部变量都要小心又小心。

如果你是才学习的话,使用属性节点没有错。

五.总结

移位寄存器的速度性能都占优势,所以能使用移位寄存器的地方就要用移位寄存器。不能使用的地方,你也要尽量使用它。至于那些认为移位寄存器作用很小的人,只能说明你研究的不够深入。我的2048程序只用了一个属性节点值

,你想想如果是你编写的话,要用多少个属性节点,多少局部变量?(下篇我会详细的讲解关于移位寄存器的使用,让你明确的知道移位寄存器是多么强大)。

反馈节点的话,如果说使用大量局部变量可以忍的话,那么出现一个反馈节点都是不能忍的。这是一种赤裸裸的陋习,使用者大多都是自学者。如果你跟老师学的这一手,好吧我无话可说。但请替我鄙视你的老师。

局部变量,尽量少用,使用当然也是可以的,但是你要有足够的心理承受能力。

属性节点值,尽量也少用,它比局部变量好点,但执行速度慢,但是基本上你是不会察觉的。注意记得连接属性节点上的错误簇,这会使它成为一个小型的顺序结构。

相关文档
最新文档