关于主vi和子vi数据内存优化的问题
最近做程序遇到一个问题:主窗口实时采集数据,子窗口为浮动窗口做采集数据的实时FFT,已经实现。但是当我单次采集的单通道数据大于4M点时,3个通道的Dbl数据共100M数据,采用全局变量传送到子vi做实时FFT时,内存增长近600-700M,由于我的物理内存1G,虚拟内存2G比较小,再加上其他程序使得系统响应迟钝;由于程序框图的黑点我也基本上能去除的都去除了,所以请问版主及各位大虾,哪种主vi和子vi数据传递方式使用的数据缓存最小以及一些较好的内存优化及缓存重用方法。 直接常见的主到子的传递,全局变量肯定不能用! 采用了队列方式,内存消耗大大降低,多谢版主。 队列是很好的选择,面向组件编程的时候,经常使用lv2结构,而该结构基本借助while的移位寄存器,这样做可以内存重用,不过速度比较慢,如果用基于队列的lv2,据说速度可以提高6倍,内存使用不会变化(和lv2原始结构比)~~~另外,使用过c的来看LabVIEW的子vi调用,可能会错误得认为子vi调用会在栈中开辟内存,事实上不是的,LabVIEW会在编译的时候把子vi(静态调用的,即常见调用模式)编译到主vi里,作为一个整体运行,数据空间为同一个~
页:
[1]