LabVIEW性能和内存管理 8
本文介绍LabVIEW性能和内存管理的几个建议8。
MemoryFragmentation内存碎片
内存管理器分配和释放内存需要时间,这会降低执行速度。在某些情况下,即使假设有足够的可用内存,也会发生内存不足错误。
上图显示了实际内存布局和报告的聚合值之间的差异。在本例中,尽管报告有0.4 GB的内存可用,但可用内存实际上并不是相邻的,如图所示。相反,可用内存被分割,如Actual图所示。最大的可用连续内存实际上是0.16 GB。内存碎片越多,内存管理器分配和释放内存的难度就越大,重复的分配会降低执行速度。
GeneralBenchmarking tips
• Disable debugging
• Save all
• Close allunnecessary front panels
在进行测试时,有几件重要的事情需要记住,这样才能得到有意义的结果。首先,在正在测试的Vis上关闭调试,除非特别想在测试时打开调试。其次,在开始测试之前保存所有的Vis。如果一个VI有未保存的更改,那么它的前面板和框图可能无法留下内存,这可能导致VI做额外的不必要的工作来更新前面板。记住,即使一个前面板不可见,如果VI有未保存的更改,它可能仍然在内存中。一旦所有的Vis已经保存,应该关闭所有不必要的前面板窗口。任何打开的前面板都将导致执行代码花费额外的时间更新前面板,这将对性能产生非常显著的影响。
Defer PanelUpdates
– Defer panelupdates when performing multiple control property changes
– Avoid wiring errorin on a node that enables panel updates in order to avoid a UI hang if error occurs before the node
默认情况下,某些属性更改会触发重绘。可以使用“延迟面板更新属性节点”来延迟这种重绘,因为重复重绘前面板非常耗时。当一次进行多个更新时,请推迟面板更新,直到完成所有更改。当将此属性设置为TRUE时,LabVIEW将重绘任何带有挂起更改的前面板对象,然后延迟所有前面板更新的新请求。
例如,当控件和指示器的属性或值发生变化时,它们不会被重绘。如果操作系统请求重绘,比如当窗口不再位于另一个窗口的后面时,LabVIEW使用当前属性而不是原始属性重绘前面板。如果为FALSE, LabVIEW立即重绘前面板的更改元素。
需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。