您的位置 首页 汽车

很多数据的内存办理

LabVIEW自动处理内存分配。因为该过程是自动的,LabVIEW在处理数据时必须注意数据的安全性。这就意味着LabVIEW需时常备份数据。如程序需处

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将在数据块中保存和拜访数据。这样,不需很多内存就能够传输数据。未初始化的移位寄存器可用来保存数据。运用数组函数读取、写入和从头调整数据。数组函数按次序排列数据,不会创立数据副本。该办法一般比行列办法慢。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/211587.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部