LabVIEW性能和内存管理 6

简介: LabVIEW性能和内存管理 6

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开发等相关项目,可联系们。

 

相关文章
|
5月前
|
存储 缓存 网络协议
阿里云内存型实例规格性能、价格、适用场景与选型指南参考
阿里云服务器ECS(Elastic Compute Service)提供了多样化的内存型实例规格族,专为需要高性能内存资源的应用场景设计。从最新的r8a系列到经过优化的re6p系列,阿里云内存型实例旨在提供稳定、高效且安全的计算环境。这些实例不仅具备强大的计算性能与内存配比,还通过支持ESSD云盘和高效网络协议,显著提升了存储I/O能力和网络带宽,适用于大数据分析、高性能数据库、内存密集型应用等多种场景。本文将详细解析阿里云ECS中的多个内存型实例规格族,包括它们的核心特点、适用场景、实例规格及具体指标数据,为用户在选型时提供参考。
阿里云内存型实例规格性能、价格、适用场景与选型指南参考
|
5月前
|
存储 分布式计算 安全
阿里云服务器内存型实例怎么选?r7/r8y/r8i实例性能、适用场景与选择参考
在选择阿里云服务器时,针对内存密集型应用和数据库应用,内存型实例因其高内存配比和优化的性能表现,成为了众多用户的热门选择。在目前阿里云的活动中,内存型实例主要有内存型r7、内存型r8y和内存型r8i实例可选。为了帮助大家更好地了解这三款实例的区别,本文将详细对比它们的实例规格、CPU、内存、计算、存储、网络等方面的性能,并附上活动价格对比,以便用户能够全面了解它们之间的不同,以供选择和参考。
|
4月前
|
存储 缓存 数据挖掘
阿里云服务器实例选购指南:经济型、通用算力型、计算型、通用型、内存型性能与适用场景解析
当我们在通过阿里云的活动页面挑选云服务器时,相同配置的云服务器通常会有多种不同的实例供我们选择,并且它们之间的价格差异较为明显。这是因为不同实例规格所采用的处理器存在差异,其底层架构也各不相同,比如常见的X86计算架构和Arm计算架构。正因如此,不同实例的云服务器在性能表现以及适用场景方面都各有特点。为了帮助大家在众多实例中做出更合适的选择,本文将针对阿里云服务器的经济型、通用算力型、计算型、通用型和内存型实例,介绍它们的性能特性以及对应的使用场景,以供大家参考和选择。
|
6月前
|
弹性计算 固态存储 ice
阿里云服务器ECS内存型2核16G、4核32G和8核64G配置实例、费用和性能参数表
本文整理了2025年阿里云服务器租赁价格表,涵盖2核16G、4核32G和8核64G配置收费标准。CPU内存比为1:8,提供多种实例规格如ECS内存型r8i、通用算力型u1等。价格由CPU内存、公网带宽及系统盘组成,支持优惠折扣(年付6.7折起)。文中详细列出各配置参考价格、公网带宽与系统盘收费,并对比不同实例规格性能,如Intel Xeon和AMD EPYC处理器系列,帮助用户选择高性价比方案。具体价格以阿里云官网为准。
787 4
|
11月前
|
监控 JavaScript 算法
如何使用内存监控工具来定位和解决Node.js应用中的性能问题?
总之,利用内存监控工具结合代码分析和业务理解,能够逐步定位和解决 Node.js 应用中的性能问题,提高应用的运行效率和稳定性。需要耐心和细致地进行排查和优化,不断提升应用的性能表现。
377 77
|
11月前
|
存储 缓存 JavaScript
如何优化Node.js应用的内存使用以提高性能?
通过以上多种方法的综合运用,可以有效地优化 Node.js 应用的内存使用,提高性能,提升用户体验。同时,不断关注内存管理的最新技术和最佳实践,持续改进应用的性能表现。
514 62
|
11月前
|
存储 缓存 监控
如何使用内存监控工具来优化 Node.js 应用的性能
需要注意的是,不同的内存监控工具可能具有不同的功能和特点,在使用时需要根据具体工具的要求和操作指南进行正确使用和分析。
283 31
|
10月前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
916 7
|
11月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
269 1
|
11月前
|
缓存 Ubuntu Linux
Linux环境下测试服务器的DDR5内存性能
通过使用 `memtester`和 `sysbench`等工具,可以有效地测试Linux环境下服务器的DDR5内存性能。这些工具不仅可以评估内存的读写速度,还可以检测内存中的潜在问题,帮助确保系统的稳定性和性能。通过合理配置和使用这些工具,系统管理员可以深入了解服务器内存的性能状况,为系统优化提供数据支持。
659 4

热门文章

最新文章