提升LabVIEW程序性能——优化内存管理
- 格式:ppt
- 大小:1.44 MB
- 文档页数:27


LabVIEW应⽤程序性能优化7.3 LabVIEW应⽤程序性能优化《上》(LabVIEW Application Performance Optimization)VERSION 5Created on: Apr 23, 2011 5:46 AM by jwdz - Last Modified: Apr 23, 2011 8:35 PM by jwdzLabvIEW图形化系统的最伟⼤之处就是降低了程序设计过程的复杂度,使⽤过它的⼯程师和科学家们已经充分的体会到这⼀点。
它已经使得程序的设计者将关注度放在了待解问题上,⽽不是如何实现程序设计上。
是的,⼤家已经学会了按照LabVIEW数据流的编程思想进⾏了应⽤程序的设计,并且采⽤LabVIEW所提供的设计模式(模版)来设计应⽤程序的架构。
对于这样设计完成的应⽤程序还需要进⼀步优化吗?答案是肯定的,因为任何设计都不会完美⽆缺。
优化的⽬的和过程在软件⼯程中,有⼀个著名的法则:80/20法则。
该法则意思说:在应⽤程序中,程序执⾏时间的80%被20%的代码所占⽤。
性能优化的⽬的就是真对20%的这部分程序代码进⾏改进和提⾼。
并且性能优化的过程是⼀个不断循环的过程。
也就是检查——优化,再检查——再优化,直⾄满意为⽌。
图 7.3-1 软件的循环优化过程⾮常遗憾的是,即使是经验⼗分丰富的程序员要想确定和发现20%这部分代码中的问题仍然是很困难的⼀件事。
显然,选择合适的分析⼯具应该显得更为重要。
7.3.1 性能优化⼯具有许多可以进⾏程序性能优化的⼯具,⽤来帮助我们查找问题的来源和观察出现问题的现象。
其中,包括来⾃操作系统的和LabVIEW本⾝所⾃带的。
下⾯简单介绍⼏种。
7.3.1.1 Windows任务管理器Windows任务管理器就是⼀个⾮常简单⽽实⽤的⼯具,并且它是内置在Windows操作系统中,使⽤起来也相当⽅便。
⽆论是学习LabVIEW之初还是现阶段的程序设计中,它都被⽤来做监测和查看CPU使⽤率的⼀个⼯具。
labview释放内存函数用法
在LabVIEW中,可以使用Clear Memory function释放内存。
这个函数可以用于将内存清空,并将其释放。
使用Clear Memory function时,需要传入需要清空的内存区域的引用。
在LabVIEW中,释放内存通常用于避免内存泄漏,即未使用的内存仍然被占用,导致浪费资源和性能下降。
通过及时释放不再需要的内存,可以提高程序的效率和稳定性。
除了使用Clear Memory function释放内存外,还可以通过使用LabVIEW编程工具箱中的内存管理工具来监控和优化内存的使用。
这些工具可以帮助识别内存泄漏问题并优化内存分配。
总的来说,LabVIEW提供了多种方式来释放内存并优化内存管理,开发人员可以根据具体需求和情况选择合适的方法来处理内存管理问题。
候总是按照从左到右的顺序,所有的参数都排布在一起,我们就可以以数据线为线索,轻易的找的数据被读写的地方。
其次,这种风格的VI,在效率上也比较优化。
对于一个输入参数(控制型控件的终端),如果把它放程序代码的最左侧,所有结构的外面,程序在运行这个子VI之前,就可以得到这个参数的确切值了。
但是,如果这个终端是在代码的某个结构中的,在某一结构的内部,那么LabVIEW必须在运行到这一结构内部的时候,才可以去读这个参数的值,否则可能会引起逻辑上的错误。
比如说,一个控制型控件的终端是在一个循环的内部,开始时它的值是x。
在运行到第n次循环之前,这个终端对应的前面板上的控件被人改为一个新的数值y。
那么逻辑上,在执行第n次循环之前,每次用到这个参数时,它的值要保持为x,而在第n次循环的时候,又要使用它的新值y。
这样的数据所在的内存,LabVIEW 显然是不能将其重用的,否则下次循环再读它的时候,数据就不正确了。
如果这个终端是在所有结构之外,LabVIEW 则可以根据数据线的链接,明确的判断出在某一节点执行完之后,程序再也不需要用到这个参数的值了,那么LabVIEW 就可以重用它所在的内存,以避免开辟新内存,拷贝数据等操作。
这样就提高了程序的内存效率。
对于一个输出参数(显示型控件的终端),如果它位于某个条件结构的内部,LabVIEW 就要考虑,程序有可能执行不到这个条件。
LabVIEW 就会多添加一些代码来处理这种情况,当VI 没有运行到这个条件时,要给输出参数准备一个默认值。
把这个终端移到所有结构之外,就可以省去这部分LabVIEW 自动添加上去的工作和,稍微提高一点效率:)3. 良好的数据流结构可以优化程序内存效率先看一个程序:图5:程序中没有必要的数据线分枝图5 的程序只是一个演示,不必追究它到底实现了什么功能。
图中的左半部分是主VI,在这个VI 中对输入的数组数据Array进行了两次操作:一次使用subVI“My Search” ;另一次使用了数组排序函数。