labview 程序的内存优化

labview 程序的内存优化

ID:9213532

大小:216.22 KB

页数:4页

时间:2018-04-23

labview 程序的内存优化_第1页
labview 程序的内存优化_第2页
labview 程序的内存优化_第3页
labview 程序的内存优化_第4页
资源描述:

《labview 程序的内存优化》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、http://www.paper.edu.cnLabVIEW程序的内存优化阮奇桢上海交通大学生物医学工程系E-mail:ruanqizhen@gmail.com摘要:LabVIEW语言在我国推广普及已经有五六年的时间了。随着LabVIEW应用范围的拓宽,用户对LabVIEW编程产品的要求已经不再仅仅简单满足于完成基本功能,对于程序性能的要求已越来越迫切。本文针对LabVIEW在内存优化中的几个方面进行了讨论,以期对LabVIEW软件开发人员编程时提高程序性能有所帮助。关键词:LabVIEW,程序设

2、计,虚拟仪器,内存,优化一.VI在内存中的结构打开一个VI的属性面板(VIProperties),其中的“内存使用”(MemoryUsage)是用来[1]查看这个VI内存占用情况的。它显示了一个VI内存占用所包含的四个主要部分:前面板、框图、代码和数据,以及这四个部分的总和。但在打开一个VI时,这四段内容并不是同时都会被LabVIEW调入内存的。当我们打开一个主VI时,主VI连同它的所有子VI的代码和数据段都会被调入内存。由于主VI的前面板一般情况下是打开的,它的前面板也就同时被调入内存。但是此时

3、主VI的框图和子VI的前面板、框图并没有被调入内存。只有当主动查看主VI的框图或是打开子VI的前面板和框图时,它们才会被调入。基于LabVIEW的这种内存管理的特性,我们在编写VI的时候可以通过以下方法来优化LabVIEW程序的内存使用。第一,把一个复杂VI分解为数个子VI。子VI的使用会增添额外的前面板和框图的空间,但并不增添额外的代码和数据空间。由于程序运行时只有代码和数据被调入内存,因此使用子VI不会占用额外的内存。使用子VI的好处还在于当子VI运行结束时,LabVIEW可以及时收回子VI的

4、数据空间,从而改善了内存的使用效率。第二,在没有必要时不要设置子VI的重入(Reentrant)属性。重入型VI每次运行时都会对自己使用的数据生成一个副本,这增加了内存开销。第三,主VI的面板通常就是用户界面,需要显示给用户。但是要尽量避免开启子VI前面板。比如,在子VI中使用与其前面板控件有关的属性节点(PropertyNode)会导致它的前面板被调入内存中,增加了内存开销,所以要尽量避免在子VI中使用主面板控件的属性节点来设置控件的值,而可以用局部变量等方法来替代。第四,我们可以放心地在VI的

5、前面板和框图里添加图片,注释等信息来帮助你编写、维护LabVIEW程序,这些帮助信息不会在VI运行时占用内存。二.内存泄漏。LabVIEW与C语言不同,它没有任何分配或释放内存的语句,LabVIEW可以自动管理内[1]存,在适当的时候分配或收回内存资源。这样就避免了C语言中常见的因为内存管理语句使用不当而引起的内存泄漏。在LabVIEW中一般只有一种情况能够引起内存泄漏,即你打开了某些资源,却忘记了关闭它们。比如,在对文件操作时,我们需要先打开这个文件,返回它的句柄。随后如果忘记了关闭这个句柄,它

6、所占用的内存就始终不会被释放,从而产生内存泄漏。LabVIEW中其它带有打开句柄的函数或VI也会引起同样的问题。-1-http://www.paper.edu.cn由于内存泄漏是动态产生的,我们无法通过VI的属性面板来查看,但可以通过Windows自带的任务管理工具来查看LabVIEW程序内存是否有泄漏。也可以使用LabVIEW的Profile(Tools>>Advanced>>ProfileVIs)工具来查看某个VI运行时内存的分配情况。三.缓存重用LabVIEW程序主要是数据流驱动型的。数据传

7、递到不同节点时往往需要复制一个副本。这是LabVIEW为了防止数据被节点改变引起错误所做的一种数据保护措施。只有当目标节点为只读节点,不可能对输入数据作任何更改时,才不在这些节点处做备份。例如,数组索引节点(Index)是不会改变数组值的,LabVIEW在这里就不为输入数组做备份。对于加减法运算等肯定改变输入数据的节点,LabVIEW往往需要对输入或输出数据作备份。有些LabVIEW程序,比如涉及到大数组运算的程序,内存消耗极大。其主要原因就是LabVIEW在运算时为数组数据生成了过多的副本。实际

8、上很多LabVIEW节点是允许使用缓存重用的,这类似C语言调用子函数所使用的地址传递。通过合理设计和使用缓存重用节点,可以大大优化LabVIEW程序的内存使用。使用LabVIEW7.1的Tool>>Advanced>>ShowBufferAllocations工具可以在VI框图中查看缓存[1][2]的分配情况。打开该工具,凡是在框图中有缓存分配的地方,都会显示出一个黑点。下面是几个最常用节点的试验结果。LabVIEW节点众多,不可能一一列举,文中未提及的节点读者在编程时自己可以尝试

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。