完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>

|
` 本帖最后由 ZHZJK 于 2014-12-1 19:46 编辑
在labview中数据的传递主要是以下几种 1.移位寄存器(功能性全局变量) 2.反馈节点 3.局部变量 4.属性节点值 5.其他(主要包括:全局变量,队列,共享变量等等,在这里不进行比较) 最下面有pdf下载 一.运行时间比较 很多人都喜欢用运行时间来判断一个程序的好坏,那么我们也进行一下比较来看看。 我们以自加一运行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程序只用了一个属性节点值,你想想如果是你编写的话,要用多少个属性节点,多少局部变量?(下篇我会详细的讲解关于移位寄存器的使用,让你明确的知道移位寄存器是多么强大)。 反馈节点的话,如果说使用大量局部变量可以忍的话,那么出现一个反馈节点都是不能忍的。这是一种赤裸裸的陋习,使用者大多都是自学者。如果你跟老师学的这一手,好吧我无话可说。但请替我鄙视你的老师。 局部变量,尽量少用,使用当然也是可以的,毕竟存在就有其道理。如果你是因为他速度而使用它时,你要明白一点,内存是影响速度的。 属性节点值,尽量也少用,它比局部变量好点,但执行速度慢,但是基本上你是不会察觉的。注意记得连接属性节点上的错误簇,这会使它成为一个小型的顺序结构。 本人建立了一个labview交流群 160910366 欢迎大家加入讨论 ` 评分
|
||||
相关推荐
144 个讨论
|
||||
|
加群啦看看看看看看看
|
|
|
|
|
|
|
|
|
11111111111111111111111111
|
|
|
|
|
|
|
|
|
谢谢分享啊。。。。好东西~~
|
|
|
|
|
|
|
|
/7
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-1 06:12 , Processed in 0.503355 second(s), Total 47, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
6971