- 7
- 0
- 约4.2千字
- 约 4页
- 2020-10-28 发布于天津
- 举报
LabVIEW 程序的内存优化 1
VI在内存中的结构
打开一个 VI的属性面板(VI Properties),其中的 内存使用”(Memory Usage)是用来查看这个 VI内存占 用情况的。它显示了一个 VI内存占用所包含的四个主要部分:前面板、框图、代码和数据,以及这四个部 分的总和。但在打开一个 VI时,这四段内容并不是同时都会被 LabVIEW调入内存的。
当我们打开一个主 VI时,主VI连同它的所有子 VI的代码和数据段都会被调入内存。由于主 VI的前 面板一般情况下是打开的,它的前面板也就同时被调入内存。但是此时主 VI的框图和子VI的前面板、框
图并没有被调入内存。只有当主动查看主 VI的框图或是打开子 VI的前面板和框图时,它们才会被调入。
基于LabVIEW 的这种内存管理的特性,我们在编写 VI的时候可以通过以下方法来优化 LabVIEW 程
序的内存使用。
第一,把一个复杂 VI分解为数个子VI。子VI的使用会增添额外的前面板和框图的空间,但并不增添 额外的代码和数据空间。由于程序运行时只有代码和数据被调入内存, 因此使用子VI不会占用额外的内存。
使用子VI的好处还在于当子 VI运行结束时,LabVIEW可以及时收回子 VI的数据空间,从而改善了内存 的使用效率。
第二,在没有必要时不要设置子 VI的重入(Reentrant)属性。重入型 VI每次运行时都会对自己使用的
数据生成一个副本,这增加了内存开销。
第三,主VI的面板通常就是用户界面,需要显示给用户。但是要尽量避免开启子 VI前面板。比如,
在子VI中使用与其前面板控件有关的属性节点 (Property Node)会导致它的前面板被调入内存中,增加了内
存开销,所以要尽量避免在子 VI中使用主面板控件的属性节点来设置控件的值, 而可以用局部变量等方法
来替代。
第四,我们可以放心地在 VI的前面板(对于非界面VI)和框图里添加图片,注释等信息来帮助你编写、 维护LabVIEW程序,这些帮助信息不会在 VI运行时占用内存。
内存泄漏。
LabVIEW 与C语言不同,它没有任何分配或释放内存的语句, LabVIEW 可以自动管理内存,在适当
的时候分配或收回内存资源[1] o这样就避免了 C语言中常见的因为内存管理语句使用不当而引起的内存泄 漏。
在LabVIEW 中一般只有一种情况能够引起内存泄漏,即你打开了某些资源,却忘记了关闭它们。比 如,在对文件操作时,我们需要先打开这个文件,返回它的句柄。随后如果忘记了关闭这个句柄,它所占 用的内存就始终不会被释放,从而产生内存泄漏。 LabVIEW中其它带有打开句柄的函数或 VI也会引起同
样的问题。
由于内存泄漏是动态产生的,我们无法通过 VI的属性面板来查看,但可以通过 Windows自带的任务
管理工具来查看 LabVIEW 程序内存是否有泄漏。也可以使用LabVIEW 的Profile (ToolsAdvancedProfile VIs)工具来查看某个VI运行时内存的分配情况。
缓存重用
LabVIEW程序主要是数据流驱动型的。 数据传递到不同节点时往往需要复制一个副本。 这是LabVIEW
为了防止数据被节点改变引起错误所做的一种数据保护措施。只有当目标节点为只读节点,不可能对输入 数据作任何更改时,才不在这些节点处做备份。 例如,数组索引节点(Index)是不会改变数组值的,LabVIEW
在这里就不为输入数组做备份。对于加减法运算等肯定改变输入数据的节点, LabVIEW往往需要对输入或 输出数据作备份。有些 LabVIEW 程序,比如涉及到大数组运算的程序,内存消耗极大。其主要原因就是 LabVIEW在运算时为数组数据生成了过多的副本。
实际上很多LabVIEW节点是允许使用缓存重用的,这类似 C语言调用子函数所使用的地址传递。通 过合理设计和使用缓存重用节点,可以大大优化 LabVIEW 程序的内存使用。使用 LabVIEW 7.1的
ToolAdvancedShow Buffer Allocations (LabVIEW 8.0 之后使用 ToolProfileShow Buffer Allocations)
工具可以在VI框图中查看缓存的分配情况。打开该工具,凡是在框图中有缓存分配的地方, 都会显示出一
个黑点。
下面是几个最常用节点的试验结果。 LabVIEW节点众多,不可能一一列举,文中未提及的节点读者在
编程时自己可以尝试。
一般顺序执行VI中的运算节点
图1:简单的顺序执行程序
如图1所示,程序对一个常量加1,然后将结果输出。
“+1节点输出端有一个黑点,表示 LabVIEW在此处开辟了一个缓存用于保存运算结果。
其实完全可以利用输入数据的内存空间来保存这个运算结果。
您可能关注的文档
最近下载
- 专题2 数据采集与编码 学案(含解析)2025届高中信息技术.DOCX VIP
- 高中地理课件湘教版:1-1中国的人口和民族.ppt
- 鲁科版高中化学选择性必修1第3章物质在水溶液中的行为3.3.2沉淀溶解平衡的应用课件(内嵌音频+视频).ppt VIP
- 建筑施工安全管理论文【推荐】.doc VIP
- 2025年高考地理识图填图完全手册(扫描版).docx
- 防火封堵材料 GB23864-2023.pdf
- 专题2 数据采集与编码 课件 2025届高中信息技术.pptx VIP
- 专题1 数据与大数据 课件 2025届高中信息技术.pptx VIP
- 鲁科版高中化学选择性必修1第3章物质在水溶液中的行为3.3.1沉淀溶解平衡与溶度积(内嵌音频+视频).ppt VIP
- 2025年甘肃省高考物理试卷(含答案解析).docx VIP
原创力文档

文档评论(0)