LabVIEW性能和内存管理 6

news2025/8/7 3:08:40

LabVIEW性能和内存管理 6

本文介绍LabVIEW性能和内存管理的几个建议6。

数据空间Dataspaces  

VI的数据存储在它的数据空间中

每个VI都有自己的数据空间

可重入VIs有多个数据空间

可重入性和数据空间

不可重入的

ü  每个调用共享一个数据空间

ü  一次只能执行一个调用

ü  较低的内存使用

ü  可以保存状态(例如,对于lv2风格的全局变量)

标准可重入性,又名“预分配克隆”:

ü  每个调用都有自己的数据空间

ü  调用从不需要等待

合并可重入性,又名“共享克隆”

在LabVIEW8.5中添加

ü  每次调用都从共享池中提取一个数据空间

ü  如果需要,将动态分配新的数据空间

ü  调用从不需要等待(除非可能要分配一个新的数据空间)

ü  递归所需

当一个VI是“可重入的”时,它可以同时被调用多次。它可以通过复制数据空间来实现这一点,这样每个并发调用都有自己的副本。在LabVIEW 8.5之前,对可重入性只有两种设置:开或关。在8.5中,添加了一种新的可重入性,称为“共享克隆”。如果一个VI不是可重入的,那么一次只能执行一个调用,因为该VI只有一个数据空间。这使内存使用更低,并且允许VI使用未初始化的移位寄存器(lv2风格全局变量的基础)在调用之间保存状态。

当将一个VI标记为可重入时,默认是“预分配克隆”。这意味着该VI的每一个调用都有自己唯一的数据空间。因此,一个调用不必等待另一个调用。但是,如果多次调用VI,它有很大的数据空间,这可能会导致内存使用量的大量增加。如果在一个标记为可重入的层次结构中有多个VIs,则此效果将成倍增加。在某些情况下,有人将系统中的每个VI都标记为可重入的,最终导致某些VIs的数千个克隆,这最终导致LabVIEW耗尽内存。仔细选择标记为可重入的Vis:关注那些经常调用和并发调用的。

可重入的新选项被称为“共享克隆”,在内部通常将其称为“池式”可重入。有了这个设置,就有了一个用于VI的数据空间池,每个调用从池中获得一个数据空间。如果池中的所有数据空间都在使用中,则创建一个新的数据空间并将其添加到池中。这具有不可重入和完全可重入的Vis的一些好处:内存使用更低,因为只需要和并发调用一样多的数据空间,SubVI调用不需要等待其他调用完成。然而,他们可能必须等待分配一个新的数据空间。缺点是,存储在VI中的任何状态(例如,在移位寄存器中)都与数据空间相关联,每次调用可能获得不同的数据空间。这使得共享可重入对于全局变量来说不太妙了。

使用递归时,必须将递归VI配置为使用共享克隆。这允许每个递归调用都有一个新的数据空间,这样它就不会阻塞,也不会使用无限的内存。

DataspaceContents

•  A single largeblock of data

•  Execution systemqueue element structures

•  Execution data

–    Wires

–    Temporary data

–    Shift registers

•  Two types:

–    “Top-level”

•       Directly stored in the dataspace

•       Numerics, clusters, array and string handles, etc.

–    “Hair”

•       Not stored directly in the dataspace

•       Referred to by a top-level allocation

•       Can be variable length

•       Array and string contents

在考虑数据空间的内容时,区分数据空间中的两种类型的数据有时很重要。顶层数据是直接存储在数据空间中的数据。例如,数据空间中的每个数字都是数据空间中的一个简单分配,占用该数字所需的字节数。Clusters也直接存储在数据空间中。但是,有些类型的数据并不直接存储在数据空间中。最值得注意的是,数组和字符串内容不存储在数据空间中。相反,数据空间本身包含一个指向存储在其他地方的实际数据的指针。这样做是为了使数据可以是可变大小的。

这很重要,因为当使用“显示缓冲区分配”时,只能看到顶层分配。这些点表示直接在数据空间中的分配。它们不会显示数组何时调整了大小,有时会看到只在错误情况下使用的分配。也就是说,缓冲区分配点不是性能问题,也不是每个由分配引起的性能问题都显示为缓冲区分配点。

需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/15708.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何把PDF转换成Word文档?给大家分享三种转换方法

如何将PDF文件的格式转换成Word文档来使用呢?对文件的格式转换,相信大家最常转换格式的文件就是这两种了,因为它们存在我们日常的各个角落。我们在工作中需要使用Word来编辑文字,发送或者是下载文件,基本都是PDF格式。…

EN 16034门窗及配件—CE认证

门窗及配件CE认证(欧盟强制认证)-简介 在欧盟市场“CE”标志属强制性认证标志,以表明产品符合欧盟《技术协调与标准化新方法》指令的基本要求。这是欧盟法律对产品提出的一种强制性要求。 在门窗及配件上加贴CE标志不但可以证明其…

从零开始学习Linux(1)

Linux基本操作 文章目录Linux基本操作前言一、操作系统相关知识1.什么是操作系统?2.操作系统有什么作用二、Linux基本操作1.ls指令2.pwd命令3.cd命令3.热键4.touch指令5.nano指令6.start指令7.mkdir指令(重要)8.rmdir指令&&rm指令&am…

蓝牙学习二(连接和通讯简述)

1.简介 蓝牙的通信是双向的,为了创建和维护一个BLE通信连接,在蓝牙中引入了“角色”这一概念,一个BLE设备不是主机(集中器)就是从机(外围设备)角色,这是根据是谁发起这个连接来确定的…

JVM - G1收集器、Region、停顿时间模型、垃圾回收(建议收藏)

​ 编辑切换为居中 添加图片注释,不超过 140 字(可选) Region 使用G1收集器时,java堆的内存会划分为多个大小相等的独立区域(Region),Region中也有新生代和老年代的概念,但是新生…

Source Insight是一个面向项目开发的程序编辑器和代码浏览器丨产品简介

Source Insight是为大型、高要求的现实世界编程项目而设计的。事实上,今天,重要的技术公司正在使用Source Insight来开发一些最大、最成功的商业硬件和软件产品。 代码分析 Source Insight会在您工作时动态解析您的源代码并维护自己的符号信息数据库&a…

Redis实战篇(六)用户签到、UV统计

一、用户签到 1、BitMap用法 我们按月来统计用户签到信息,签到记录为1,未签订则记录为0。 把每一个bit位对应每月的一天,形成映射关系。用0和1标识业务状态,这种思路称为位图(BitMap)。 Redis中利用strin…

qt qml

QT Quick是QT提供的一种高级用户界面工具包,包含对QML完美支持. Qt Quick 就是使用 QML 构建的一套类库。 Qml模块本身并没有涉及图形显示,所有的图形处理都由Qt Quick模块完成。 QMl是一种高效的开发UI 的语言。QML(Qt Meta-Object Languag…

对接建行支付

前两篇文章介绍了对接微信支付和农行支付的方法,这篇文章介绍一下建行支付。 使用场景: 在微信公众号中调用微信付款,或者公众号内页面调用龙支付或者H5页面支付。 一、微信支付 参考建行给的接口文档 交易流程如下: 按照接口要求…

sync_binlog和innodb_flush_log_at_trx_commit的区别

innodb_flush_log_at_trx_commi 这个指的是写redo及后续操作,ib_logfile这个文件的刷新方式。 sync_binlog纯粹指的是binlog ,如 mysql-bin0003等。 基于innodb_flush_log_at_trx_commit 的三个参数的解释。 Innodb_flush_log_at_trx_commit 0 redolo…

代码随想录59——单调栈:503下一个更大元素II、42接雨水

文章目录1.503下一个更大元素II1.1.题目1.2.解答2.42接雨水2.1.题目2.2.解答2.2.1.双指针for循环解法2.2.3.单调栈解法1.503下一个更大元素II 参考:代码随想录,503下一个更大元素II;力扣题目链接 1.1.题目 1.2.解答 做本题之前建议先做 73…

Spring Boot 集成freemarker模板引擎

前言 J2EE的领域中包含5大引擎,分别为模板引擎、流程引擎、搜索引擎、规则引擎、报表引擎。每种引擎都能解决某一方面的问题,模板引擎解决的是用户界面与业务数据分离,流程引擎解决的是驱动业务按照一定的流程执行,搜索引擎解决的…

局部线性分析(机器学习)

目录 局部线性嵌入(LLE) 局部线性嵌入(LLE)算法的主要步骤分为三步 效果如下 局部线性嵌入(LLE) 局部线性嵌入(LLE)是一种非线性降维算法 它能够使降维后的数据较好地保持原有流…

大学生HTML个人网页作业作品:基于html css实现围棋网页(带报告4800字)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

动静态链接动静态库制作与使用

前置知识 程序的编译与链接:动静态库属于程序链接阶段的概念,如果对程序的编译链接过程不太熟悉,可以先看一下着篇文章gcc&动静态链接:这篇文章讲解了如何在Linux环境下用gcc完成编译链接的每一步操作 链接库 在链接的过程…

Java对象内存结构和创建过程

文章目录对象的内存布局对象头Mark WordKlass Pointer实例数据对齐数据对象的创建总结对象的内存布局 我们的对象一般存储在我们的堆内存中,我们把实例对象可以划分为对象头,实例数据,对齐填充 对象头(object header&#xff09…

SpringBoot+Vue项目流浪狗领养管理系统的设计与实现

文末获取源码 开发语言:Java 使用框架:spring boot 前端技术:JavaScript、Vue 、css3 开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库:MySQL 5.7/8.0 数据库管理工具:phpstudy/Navicat JDK版…

图像运算和图像增强十

图像运算和图像增强十 图像锐化之 Sobel、Laplacian 算子实现边缘检测 (1)Sobel算子(一阶微分算子) Sobel算子是一种用于边缘检测的离散微分算子,它结合了高斯平滑和微分求导。该算子用于计算图像明暗程度近似值,根据图像边缘旁…

top命令应用(查看进程实时动态信息)

记录:321 场景:在CentOS 7.9操作系统上,top命令是查看进程实时动态信息工具。查看进程状态、进程使用内存状况、进程使用CPU状况、进程PID等。 版本: 操作系统:CentOS 7.9 1.top命令介绍 top命令,查看…

内存、指针与数组

C语言的指针可以当成一个特殊的数据类型(像int一样的数据类型),可以说其唯一的作用就是为了存储地址,其他的都可以当作它的衍生用法。 指针的诸多功能都是基于其能直接操作指定内存空间存储的值,每个程序运行都会由操作…