LabVIEW基础-内存优化

写了个需要长时间运行的程序,没做内存优化,于是,程序内存、我、老大、客户都炸了。


一 查看内存使用情况

1 未运行的程序所占内存

文件-VI属性-内存使用
VI属性-内存使用

2 查看运行中的VI所用时间及内存使用情况

工具-性能分析-性能和内存
性能分析-性能内存信息

3 显示所分配缓冲区

工具-性能分析-显示缓冲区分配
一个黑点表示有一个缓冲区分配
性能分析-缓冲区分配

二 内存优化

1 如非必要,不要将VI属性设置为重入

VI执行属性做了这么个子VI
子VI主VI
主VI设置为非重入然后运行一下
结果是这样的
结果
设置为共享副本重入执行的时候
结果是这样的
结果2设置为预先分副本重入执行的时候
结果是这样的

结果3共享副本重入执行,当框图内多个相同子vi时,执行时系统会根据是否需要同时执行来创建独立的内存空间,如果任意时刻仅有一个vi在运行,则系统就只会创建一个独立的内存空间,若多个同时运行时,同时系统就会创建多个独立的内存空间。
设置为此模式时尽量不要有没初始化的东西。
预先分副本重入执行在框图内有多个相同子VI的时候,给每个子VI分配一个单独的内存空间。

2 使用“请求释放内存”函数

3 使用移位寄存器或元素同址操作结构

此程序先构造数组再对其中几个特定位置的值进行替换,每一步操作都新开一块缓存保存运算结果副本。

在这里插入图片描述
加了个移位寄存器之后,成功去掉了不必要的数据副本

在这里插入图片描述

4 尽量避免开启子VI前面板

非得开启的时候,如果子VI前面板上有数据量大的控件(表格、图表等等),在关闭的时候记得释放。
例如我这个,一个表格,从程序开启到运行结束,最后要显示的数据大概3M,然后它再生成个波形图,而这个子VI又同时运行22个,于是它就在查看数据的时候内存不足,挂了。
解决很简单,在退出查看的时候把数组和波形图置空,完活。
在这里插入图片描述

5 可以将复杂VI拆分成几个子VI

这个操作并不会增加额外的数据空间和代码,而且在子VI运行结束的时候,可以及时收回子VI数据空间。

6 避免内存泄漏

LabVIEW是可以自动管理内存的,适当的时候分配或回收资源。一般就反复打开某资源之后没关闭会出现内存泄漏。
就打开文件后,就算不连“关闭文件”这个函数程序也不报错,但是就是会内存泄漏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

斯金

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值