第1页共8页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共8页LabVIEW程序的内存优化2-子VI的优化1
子VI参数的缓存重用数据在子VI间传入传出,如果程序设计的好,可以做到缓存重用,使得数据在主VI和子VI中都不发生拷贝,提高程序的效率
我们先来看一下图1所示的VI
打开Tool>>Profile>>ShowBufferAllocations工具查看一下这个VI中内存分配的情况,会发现在代码的加法函数处有一个黑点
这个黑点说明程序在这里有分配了一块内存,这个内存是用来存储加法运算结果的
s第2页共8页第1页共8页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第2页共8页图1:控件不与接线器相连时,加法处有内存分配为什么加法函数在这里不做缓存重用呢
利用其中一个加数的内存空间来保存计算结果
当这个VI运行的时候,图2中,加数Numeric的数据是由VI前面板的控件提供的
如果用户不修改控件的值,每次VI运行,这个数值应该是保持不变的
如果加法函数在这里做缓存重用,加数或者说它对应的控件中的数据,就会在加法运算执行后被修改
这样程序就会出现逻辑上的错误
所以把一个这样的控件联在LabVIEW的运算节点上,运算节点是不能重用控件的数据内存的
同样的道理,链接一个常量到运算节点上,节点同样不能做缓存重用
在子VI中,没有连到接线器上的输入控件就相当与一个常量
但是,如果我们让VI上的控件与VI的接线器(ConnectorPane)相连,情况就不一样了
如图2所示,把三个控件连到接线器上,程序中加法节点上那个黑点就消失了,不再为运算结果分配新的内存
第3页共8页第2页共8页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第3页共8页图2:控件不与接线器相连时,加法处有内存分配这是因为,当输入控件与接线器连接后,