• LabVIEW性能和内存管理 4


    LabVIEW性能和内存管理 4

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

    传输缓冲区

    传输缓冲区保护操作缓冲区和执行缓冲区之间的数据传输

    只有当前面板在内存中时才更新

    为了保护操作和执行缓冲区之间的数据传输,LabVIEW使用传输缓冲区。当您处理大型数据集,并且必须显示对该数据的操作时,这可能会导致更多的内存使用。传输缓冲区和执行将在“优化执行速度”中介绍。

    局部变量和全局变量

    局部变量更新数据传输缓冲区。

    读取本地或全局变量总是会导致数据复制

    在可能的情况下使用连线传输数据

    注意,在左边的示例中,当使用连线传输数据时,只需要分配1个缓冲区。如果从控件的局部变量读取,则生成一个副本。在本例中,生成了三个副本,每个读取的局部变量对应一个副本。同样,如果局部变量包含大型集群或数组,则这一点更加重要。请注意,即使从同一个变量读,然后再写,这也适用。局部变量永远不能原地操作,因为局部变量可能引用传输缓冲区,而不能对传输缓冲区进行原地操作。

    本地变量与VI服务器属性节点

    局部变量

    可以在任何线程中运行

    复制到/从传输缓冲区

    如果前面板在内存中,写操作会导致第二次拷贝进入操作缓冲区(尽可能避免)

    在速度很重要的时候使用

    属性节点

    必须在UI线程中运行

    复制到/从操作缓冲区

    写操作导致第二次拷贝进入传输缓冲区

    在内存中强制前面板

    需要同步显示时使用

    如果可能的话,两者都要避免

    这里列出的规则是针对VIServer属性节点的——它们不适用于用于DAQ、LV类等的属性节点。

    Data by Reference

    操作对数据的引用,而不是数据本身

    分支连线可能导致连线上的数据的副本。如果多个分支修改该值,或者一个分支在另一个分支完成使用原始值之前修改该值,那么这总是正确的。数据值参考(DVR)允许在不复制的情况下操作数据。这在处理性能关键型应用程序中的大型数组时尤其有用。

    考虑一下这个场景:你给朋友发电子邮件,与他们分享视频。如果你在电子邮件中包含了整个视频,朋友们会很生气,因为这个文件占了他们收件箱的空间。所以,你要附上在线视频地址的链接。因为所有的收件人都在网上引用同一个地点,所以每个人都能看到最新版本的视频,以防它被修改。

    Data ValueReferences

    作为数据的引用,而不是完整的数据本身

    能否保护对数据的访问

    在LabVIEW2009中引入的数据值参考和single element queues是传输大型数据集的非常有效的方法。在“内存优化”中介绍更多关于这些结构的知识,但它们之所以值得一提,是因为它们有助于在整个VI层次结构中移动大型数据集,同时最小化内存使用。重要的是要注意,必须使用InPlace Element结构来访问数据值引用的数据。

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

  • 相关阅读:
    软考中级系统集成项目管理工程师自学好不好过?
    浅析 Redisson 的分布式延时队列 RedissonDelayedQueue 运行流程
    超级详细的微信小程序登录基于SpringBoot
    阿里提出MS-Diffusion:一键合成你喜爱的所有图像元素,个性化生成新思路!
    【机器学习4】降维
    open3d安装相关问题
    RobotFramework自动化测试框架的基础关键字
    贪心算法之装箱问题
    序列查询
    【设计模式】 - 结构型模式 - 迭代器模式
  • 原文地址:https://blog.csdn.net/bjcyck/article/details/127892232