LabVIEW处理阵列数据时如何避免占用多份内存空间
在程序中使用一个阵列数据类型,执行时希望这个阵列数据只在内存占有一份空间。可以使用移位寄存器以及"Replace Array Subset"使阵列数据在内存只占一份空间,但希望同时可以结合函数全局变量这个功能。 因为在使用函数全局变量中,不能初始化移位寄存器,所以需要一个方法可以做初始化的动作。 如果使用"Initialize Array",阵列数据就会在内存占用额外的空间。
解答:
下面有一个示例可以用来观察阵列数据在内存的配置方式:
1) 关闭所有已开启的VI,但是不关闭LabVIEW。
2) 开启下方附件范例"Two Copies in Memory.vi",但是先不要做执行的动作。
3) 打开Windows的工作管理员,同时观察LabVIEW执行时所占用的内存数目。
4) 以默认设置执行示例程序,可以观察到内存的使用增加了20 Mb。 在预设的阵列大小设定下,会产生1276900个8位长度的双浮点数,其总容量为10 Mb。 由于这个阵列在内存有两份空间,所以内存的总使用量为20 MB。
另一个观察内存使用空间的方法是开启LabVIEW中的buffer allocations window,其位于Tools » Advanced » Show Buffer Allocations。 从程序区中你可以看到一份内存空间是属于移位寄存器而另一份是属于"Initialize Array.vi"。
如果要指定阵列的型态,可以使用"Reshape Array.vi"来代替"Initialize Array.vi"。 利用这个方法,可以永远都只用既存的阵列数据来做相对应的程序运算而无须再替阵列数据创造第二份内存空间。
要实现上述的方法,可以参照下面的示例:
1) 关闭所有已开启的VI,但是不要关闭 LabVIEW。
2) 打开附件示例程序"One Copy in Memory.vi",但先不要做执行的动作。
3) 打开Windows的工作管理员,同时观察LabVIEW执行时所占用的内存空间。
4) 使用默认的设置执行示例程序,可以观察到内存的使用空间只增加10 Mb。 在这个范例中,数据阵列只在内存占有一份空间。
也开启LabVIEW中的buffer allocations window,位于Tools » Advanced » Show Buffer Allocations。 从程序区可以看到只有一份阵列内存空间,且其属于移位暂存器。
更详细的内容,参加如下附件的介绍。
LabVIEW、LabVIEW开发、LabVIEW编程、LabVIEW程序
上文中提到的例子和资料,均在word中的附件里,可点击下载。进一步了解,可联系们。
北京瀚文网星科技有限责任公司www.bjcyck.com,是一家以LabVIEW(虚拟仪器)为主要技术手段的开发公司。其服务领域包括:汽车、通信、航空、半导体、电子设计生产、过程控制和生物医学等各领域。涵盖了从研发、测试、生产到服务的产品开发所有阶段。
公司提供运动控制、电子设计、视觉和射频以及无线等诸多领域的解决方案,技术咨询以及资源整合。所提供服务确保符合北京瀚文网星产品认证和行业标准,更有效地使用北京瀚文网星的全球资源,提供LabVIEW软件开发、维护、破解等服务以及北京瀚文网星产品代理。
13691203761王工(手机微信)
http://www.bjcyck.com/nd.jsp?id=425#_np=2_358
楼主最近还看过