LabVIEW中的"结构"概念同C语言有很大不同,C语言中中的结构指的是复合数据类型,而labVIEW中所谓的结构相当于C语言的程序运行结构,包括循 环、顺序结构、条件结构、事件结构等,这里面尤其需要强调的是顺序结构,无论是平铺式顺序结构还是堆叠式顺序结构,NI都不建议使用,原因主要有以下几点:
1:强行规定的动作次序,影响了数据流的传递方式。
2:内存使用上,顺序结构比较同样性能的数据依赖关系的数据流,程序框图所占的内存空间比较大。

      我们在作VI性能分析的时候,也能看到一个有趣的现象,LV虽然把顺序界结构放在函数选板的结构子类中,但是在统计中,顺序结构并没有被看成是结构,而是作为一般的节点,其中每增加一个祯就增加一个节点,所以一个复杂的顺序结构会增加大量的节点,从这个角度也可以说明,从LabVIEW的内部来看,顺序结构并不时真正意义的运行结构。

      从上面的例图可以看出:顺序结构并没有被统计为结构,而只是一般的节点,每一个FRAME都是一个节点。

      在看下面的例图

      通过上面的例子可以发现,for ,while ,case 都是结构,本身也都是一个节点。

网友
4/20/2009 10:41:19 am

o(∩_∩)o...
作为G语言,sequence确实不是很建议使用,反正用到sequence的,基本可以用loop来代替,甚至可以使用state machine之类的高级一点的东西。
至于说sequence是结构还是节点,有些时候没必要分这么清楚吧?
是节点就更加浪费内存吗?这个回去研究研究。。。。

Reply
csxcs_366
4/20/2009 10:42:23 am

节点和节点肯定是有区别的,但是节点数量的多少是检验一个VI的效率的一个重要指标,如果完成同样的功能,少的节点数应该能体现编程的复杂程度,比如SIN函数,LV中有SIN,COS和SIN COS复合的函数,如果只求SIN或者COS,当然选择单一的最好,如果选择SIN COS复合函数,但是,如果求SIN 和COS ,那用两个单独的不如直接用SIN COS复合函数,前者两个节点,后者一个节点.
至于顺序结构,LV作为多年的成型编程语言,既然它内部统计结构不包含循序结构,决不应该是它的错漏,肯定它还是认为顺序结构和一般的如条件结构有很大的不同.
内存的多少也不完全代表效率的高低,比如经常初始化一个比较大的数组,内存耗费肯定很大,如果让他根据需要一个个增加,虽然内存占用少了,因为频繁调用内存管理器,效率反而低了.
LV内部底层的东西是不公开的,所以只能是猜测和推断

Reply



Leave a Reply.