找回密码
 注册
LabVIEW+单片机学习套件全套教程资料下载[免费]LabVIEW论坛精华列表贴USB0816数据采集卡《LabVIEW宝典》
LabWindows/CVI论坛精华贴NET0816以太网数据采集卡RC0210远程设备授权系统 关闭关停锁定打开设备 户外分布式数据采集
NET1624低速高精度以太网数据采集卡WIFI0824SD无线WIFI网络数据采集卡脱机运行 SD存储 小尺寸微型 串口采集远程采集 安卓 手持移动采集 纪录仪
查看: 715|回复: 3

[labview求助] 关于主vi和子vi数据内存优化的问题

[复制链接]
ok_here 该用户已被删除
发表于 2010-8-4 17:17:48 | 显示全部楼层 |阅读模式
最近做程序遇到一个问题:主窗口实时采集数据,子窗口为浮动窗口做采集数据的实时FFT,已经实现。但是当我单次采集的单通道数据大于4M点时,3个通道的Dbl数据共100M数据,采用全局变量传送到子vi做实时FFT时,内存增长近600-700M,由于我的物理内存1G,虚拟内存2G比较小,再加上其他程序使得系统响应迟钝;由于程序框图的黑点我也基本上能去除的都去除了,所以请问版主及各位大虾,哪种主vi和子vi数据传递方式使用的数据缓存最小以及一些较好的内存优化及缓存重用方法。
发表于 2010-8-4 20:01:49 | 显示全部楼层
直接常见的主到子的传递,全局变量肯定不能用!
回复 顶

使用道具 举报

ok_here 该用户已被删除
 楼主| 发表于 2010-8-5 14:52:12 | 显示全部楼层
采用了队列方式,内存消耗大大降低,多谢版主。
回复 顶

使用道具 举报

发表于 2010-8-5 15:00:01 | 显示全部楼层
队列是很好的选择,面向组件编程的时候,经常使用lv2结构,而该结构基本借助while的移位寄存器,这样做可以内存重用,不过速度比较慢,如果用基于队列的lv2,据说速度可以提高6倍,内存使用不会变化(和lv2原始结构比)~~~
另外,使用过c的来看LabVIEW的子vi调用,可能会错误得认为子vi调用会在栈中开辟内存,事实上不是的,LabVIEW会在编译的时候把子vi(静态调用的,即常见调用模式)编译到主vi里,作为一个整体运行,数据空间为同一个~
回复 顶

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cpubbs论坛. ( 粤ICP备09171248号 )

GMT+8, 2026-9-29 05:27 , Processed in 0.030329 second(s), 8 queries , Gzip On, File On.

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表