大量数据的内存管理

发布者:CreativeMind最新更新时间:2015-08-24 来源: eefocus关键字:大量数据  内存管理 手机看文章 扫描二维码
随时随地手机看文章
LabVIEW自动处理内存分配。因为该过程是自动的,LabVIEW在处理数据时必须注意数据的安全性。这就意味着LabVIEW需时常备份数据。如程序需处理大量数据,大量的数据副本可能会导致内存溢出错误。使用下列规范避免内存问题,优化程序以处理大量数据。
注:  也可使用记录性能和内存信息窗口,获取和显示VI执行事件和内存使用的数据。使用该窗口确定引发内存问题的VI。

减少大量数据的数据副本

LabVIEW是一种数据流语言,VI需要更多数据时(例如,数据连线分出两条支路),LabVIEW会创建数据副本。大多数情况下LabVIEW能检测是否需要创建一个新的副本,当不确定是否需要数据副本时,LabVIEW仍然会创建新的数据副本。

使用显示缓冲区分配窗口确定LabVIEW分配内存的位置。该窗口确定LabVIEW用于存放数据副本的数据缓冲区。

请按照下列规范编写程序,以减少LabVIEW创建的数据副本:

注:  下列技巧中有些与良好的LabVIEW编程惯例不一致,这些技巧只在处理海量数据时使用。
  • 使用占用资源较小的数据类型。例如,使用16位整型数据,而不是双精度浮点数。
  • 使用简单数组。当从波形或动态数据提取数据数组时,LabVIEW会为数据建立额外副本。
  • 创建大程序框图。调用子VI时,LabVIEW会创建数据副本。
  • 数据流经子VI时,请确保所有程序框图接线端均在条件结构或循环之外。如接线端在条件结构或循环中,LabVIEW将会产生越来越多的数据副本。
  • 如请不要将数据连接至循环内。如要将数据连入循环,可使用移位寄存器。LabVIEW只在第一次循环时复制一个数据副本。如使用隧道,每次循环时,LabVIEW都会创建数据副本。
  • 如有可能,使用必须连接的输入。产生默认值时,LabVIEW将会创建数据副本。
  • 使用元素同址操作结构,而不是平铺式顺序结构。
提示:  较新版本的LabVIEW比早期版本自动复制更多数据副本。版本越新,LabVIEW处理大量数据的功能就越好。

传输大量数据

如不能避免创建大量数据副本,可减少每个副本的大小。传输时,将大量数据分为若干部分,即数据块策略。数据分块时,LabVIEW创建的副本对内存使用没有负面影响。但是,这些副本对数据吞吐率还是有负面影响,所以,仍建议最小化这些副本。下例证明了这个概念。

需复制512 MB数据至磁盘。一次调用就可获取所有数据并将数据保存至磁盘。但是,即时将数据副本减少为1,仍需传输原始数据和一个数据副本。这意味着要向LabVIEW要求1 GB的内存。更好的方法是建立一个循环,一次获取500 KB的数据并流盘。内存占用减少为1 MB,500 KB用于原始数据,500 KB用于数据副本,这在大多数计算机的内存容量之内。

优点是节省了LabVIEW分配大量内存所需的海量时间。在多数计算机上,250 MB数据的流盘时间不超过15秒。如按照其它方法,LabVIEW分配1 GB RAM的时间很可能超过15秒。

如将大量数据流盘或存储在冗余磁盘阵列(RAID)中,也可不通过缓冲区传输数据,以减少数据副本,加快数据传输。如要禁用缓冲区,将TRUE值连接至打开/创建/替换文件函数的禁用缓存输入端。

显示大量数据

在许多交互式应用程序中,唯一对数据进行的操作是显示数据。显示500万个数据点超出了大多数显示器的显示能力。LabVIEW图片的宽度一般在300-1000像素。500万个点超过了波形图实际显示点数三个数量级。所以,需大量减少数据点。

例如,在图形上看到精确至像素的大量数据。如一个500万点缓冲区中有一个突波,绘制出的图形应该是一条水平线,上有一个一像素的突波。如果数据是一个正弦波,其周期数大于屏幕的像素宽度。图形应该是一个不间断的频带,且无混叠。最大值最小值截取算法可解决上述两个问题。

最大值最小值截取算法是在每个截取区间内给出一个最大值和一个最小值,以截取部分数据。简单截取使用每个截取区间的第一个数据点作为截取区间的数据点。简单截取将会导致混叠,所以只能在时间紧迫,精度相对不重要的情况下使用该算法。

使用最大值最小值截取算法的第一步是确定图形的像素宽度。使用图形的绘图区:大小:宽度属性,找到该项。每个像素宽度至少需两个截取区间。将像素宽度乘以2,获得区间数量,然后将数据除以区间数量,从而降低算法误差。将数据长度除以这个数,向最近数取整。得到的是截取的数据块大小。对于每个数据块,找到最大和最小点,并将其按照在数据集合中的顺序排列。不必担心最后一个数据块的数据点比其它数据块的少。问题在于小于像素宽度,在屏幕上不可见。将所有最大值和最小值数据连接起来,然后绘制这些数据。屏幕上每个像素宽度上有四个点。这样,即使有一个像素宽度的突波,周围的像素也不会受影响。最大值最小值截取法保证了永远可以看到数据的峰值,显示高频率正弦波产生的不间断频带。绘制到图形的数据较少,绘制的速度就更快。

在下图中,如使用最大值最小值截取算法处理左边的数据,LabVIEW将生成右边的图表。

存储大量数据

使用队列或数据值引用在内存中存储大量数据,而无需占用大量内存。使用包含数据的单个元素创建一个队列。要访问数据时,可拆散队列。这使程序的其它部分不能同步访问某个数据。对数据操作完成后,将元素重新排入队列。要传递的唯一对象是队列的引用。传递队列时,LabVIEW不创建额外的数据副本。给队列命名后,可在任何时候使用获取队列函数获取队列引用。创建多个数据对象与创建多个队列一样容易。

还可使用数据值引用存储数据,不创建额外数据备份。数据值引用比队列速度更快,但是没有超时选项。可为数据创建引用并传递引用,而不是传递数据至队列。如要对数据进行操作,可使用元素同址操作结构。数据值引用写入/读取元素边框节点接受数据值引用输入,用户可在元素同址操作结构中操作数据并替换原内存中的数据。

注:  可在类属性对话框的继承页上设置只有LabVIEW类的成员VI才可创建类的数据值引用。

也可使用功能全局变量在内存中存储大量数据。使用功能性全局变量,LabVIEW将在数据块中保存和访问数据。这样,不需大量内存就可以传输数据。未初始化的移位寄存器可用来保存数据。使用数组函数读取、写入和重新调整数据。数组函数按顺序排列数据,不会创建数据副本。该方法通常比队列方法慢。

关键字:大量数据  内存管理 引用地址:大量数据的内存管理

上一篇:labview深入探索-----内存管理和缓存重用
下一篇:LABVIEW的深入探索之全局变量的优劣

推荐阅读最新更新时间:2024-03-30 23:03

新型DASMON监测系统提高芯片制造厂处理大量数据的性能
来自德国累斯顿的高科技环保专家DAS Environmental Expert公司不仅为其半导体行业客户提供废气处理解决方案,还为工厂已安装的系统与独立的集中式监控工具连接。DAS Environmental Expert公司废气处理业务部门总监Guy Davies博士表示:“许多客户会随着工厂的产能扩充而逐步增加其废气处理系统,而我们的解决方案能将DAS和带智能监测工具的第三方系统连接起来。”DAS公司于2013年全面重新设计其产品,推出新一代废气处理系统的监测工具DASMON,某大型国际客户已成功安装了该工具。Davies博士说道:“新版本优点是更加易于扩展,旧版DASMON系统会因为现有芯片制造厂扩建时,经常受到连接数量过多
[模拟电子]
linux下内存管理学习心得(一)
最近在学习内存管理的时候,发现对linux下的所谓内存如何管理如何分配都不熟悉,通过最近的查阅资料可总结如下,如有不妥之处欢迎大家批评与指正。 总的的来说linux的内存管理其实主要难理解的是以下几个部分: 1、虚拟地址、物理地址、线性地址、逻辑地址之间的区别。 2、用户地址空间与内核地址空间区别。 3、内核如何分配所谓的地址。 4、一个可执行程序的地址分布以及运行地址分配。 目前我也大概总结这几个,其实这方面的知识肯定很多,但限于能力只能如何,也尽最大努力详细分析其中原委。注:很多是参考了网上的大牛总结的。 一、各地址之间区别 1、虚拟地址 其中各种地址的概念大家都可查阅到,我也就不多说了,虚拟地址就是为了给用
[单片机]
linux下<font color='red'>内存管理</font>学习心得(一)
STM32内存管理以及STM32中的堆栈
今天仔细读了一下内存管理的代码,然后还有看了堆栈的相关知识,把以前不太明白的一些东西想通了。 首先,先看一下stm32的存储器结构。 Flash,SRAM寄存器和输入输出端口被组织在同一个4GB的线性地址空间内。可访问的存储器空间被分成8个主要块,每个块为512MB。 FLASH存储下载的程序。 SRAM是存储运行程序中的数据。 所以,只要你不外扩存储器,写完的程序中的所有东西也就会出现在这两个存储器中。 这是一个前提! 堆栈的认知 1.STM32中的堆栈。 2.编程中的堆栈。 在编程中很多时候会提到堆栈这个东西,准确的说这个就是RAM中的一个区域。我们先来了解几个说明: (1) 程序中的所有内容最终只会出现
[单片机]
STM32<font color='red'>内存管理</font>以及STM32中的堆栈
AUTOSAR诊断系统事件内存管理
事件内存管理定义为在DEM模块中添加、更新和删除事件内存条目的过程。DEM模块确定事件内存条目是新的还是当前存在于事件内存中。 Event retention Event retention定义了DEM模块记录和处理事件(DTC)、UDS状态信息和事件相关数据(例如,冻结帧、扩展数据)的能力。 DEM规范共规定了6种Event存储的条件,更多内容请参看DEM规范手册。 Event Displacement 事件替换意味着,最不重要的、已经存在的事件内存条目被需要存储的新事件内存条目替换。在替换过程中,重要程度最低事件内存条目会丢失。如果新事件内存大小超过所有可能的事件,则不会发生置换。如果事件置换策略被禁止,即DemE
[嵌入式]
Android M测试第二版改进内存管理功能
    Android系统的内存管理一直比较糟糕,泄露问题至今仍然无解。尽管如此,Google在内存查看和管理方面倒是颇为用心,对Android M的第二个预览版又做了大幅度的改进。如今的内存管理页面中,你可以更直观地看到系统平均内存占用量、性能等级、内存总量、平均使用率、剩余空间等指标,还能分3小时、6小时、12小时、1天等不同时间长度来查看。     点击每个应用,也可以单独查看它的内存占用情况。突出显示的是平均值,最大值以小号字跟在下方,还有应用启动频率、进程细节等,更容易发现到底是什么服务和程序在吃内存。强制停止的按钮也被隐藏在菜单。   Google对于系统的易用性改善所
[手机便携]
特斯拉惊现“内鬼”,前员工盗取大量内部数据
据美国内华达州联邦法庭公布的诉讼文件显示, 特斯拉 起诉了一名前员工,称其盗取了该公司的商业机密并向第三方泄露了大量公司内部数据。   据诉讼文件显示,特斯拉起诉了曾在内华达州Tesla Gigafactory超级工厂工作的前过程技术人员马丁·特里普(Martin Tripp)。该名员工承认曾开发恶意软件进入特斯拉内部生产操作系统,偷取大量数据并交给第三方,还向媒体发表不实言论。这些被泄露的数据包括“数十份有关特斯拉的生产制造系统的机密照片和视频”。   特里普开发的恶意软件安装在了三台不同员工的电脑上,所以在他离开特斯拉后,还能继续从该公司传输数据到第三方。而电脑被安装该恶意软件的员工也将受到牵连。   另外,特里普还向媒体发表
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新测试测量文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved