- 1、本文档共141页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据类型转换 强制点表明连接了两种不同的数据类型 LabVIEW中类型强制转换需要数据备份 涉及大数组的类型强制转换会占用大量内存 推荐的类型转换方式 更好的解决方式是在随机数创建时进行转换 避免转换大块数据缓存 (14.3 KB) (22.7 KB) 把复杂VI分解成多个子VI 子vi会增加额外的前面板和框图的空间,但并不增添额外的代码和数据空间。由于程序运行时只有代码和数据被调入内存,子vi不会占用额外的内存。 好处是子vi运行结束后,LabVIEW可以及时收回子VI的数据空间,从而改善内存的使用效率。 采用多面板程序 通过多面板程序实现只有在必要时才显示某些窗口,因为界面显示是最费内存的,因此这样可以极大降低内存的消耗。 没必要时不要设置VI的重入特性 重入型vi每次运行时都会对自己使用的数据生成一个副本,这增加了内存开销 合理分配数组内存 过多进行内存重新分配占用很大开销 慎用可能导致内存重新分配的相关函数 创建数组 连接字符串 演示:编程方法影响程序性能 总在开辟新内存,必定时间长 演示:编程方法影响程序性能 循环次数并非事先指定,因此每次循环也会开辟新的内存,但节省了Build Array函数的时间。 演示:编程方法影响程序性能 循环无需开辟新的内存,时间会明显减少。 演示:编程方法影响程序性能 灵活使用LabVIEW自带的VI 基本线性代数子程序VI (Basic Linear Algebra Subroutines) 合理归并基本线性代数操作 减少不必要的内存复制开销 使程序更加简洁 数学?线性代数?BLAS NEW! 元素同址操作结构 更新数组或簇中的元素时,避免元素数据备份 应用控制?内存控制 NEW! 元素同址操作结构的优点 方便实现多种情况的缓存重用,消除元素复制开销 数组索引和替换 簇的绑定和解除绑定 波形的绑定和解除绑定 变体的缓存重用 任意元素的缓存重用 举例:数组索引和替换 将数组第2个元素增大10倍 方法一: 方法二: 元素数据备份 举例:簇的绑定和解除绑定 个人纳税信息的更新 演示:嵌套的元素同址操作结构 LabVIEW 与多线程 程序、进程与线程 程序是计算机指令的静态集合、进程就是正在运行的程序,是一些所有权的集合,包括内存、CPU运行时间等一系列资源,为线程的运行提供一个环境。线程才是程序的最小执行单位,是程序的一条执行路径,是操作系统分配CPU时间的基本实体。一个程序的进程以一个主线程开始,如果进程的执行可以划分为多个执行路径,则可以创建多个线程。 例:三线程程序,用户界面线程、数据采集线程、仪器控制线程。这些线程共享进程内的公共资源。 LabVIEW 与多线程 多处理器环境下的并行编程 1、线程调度 2、线程优先级 3、线程通信与同步 进程间:环境变量、命名管道、共享内存等 线程间:全局变量、全局数据、文件句柄或通信参数等进程内数据结构来完成。 同步:数据同步、设备同步、任务同步。 LabVIEW对多线程程序设计的支持 不支持线程的直接创建,从执行系统和数据流控制两个层次提供对多线程程序设计的支持 发布时需要运行引擎。 执行子系统线程数量配置 \ vi.lib \ utilities \ sysinfo.llb 中的threadconfig.vi一共有25个具有优先级的执行子系统。 执行子系统线程数量配置 线程是一把双刃剑! 在LabVIEW下实现生产者/消费者 无数据相关的多个循环 主 / 从关系 在循环间实现通讯与同步 工作流程 主循环负责通知各个从循环是否执行 允许循环间异步执行 数据的非相关性实现多线程 程序过程分解 实现循环间的数据通讯 变量 通知器 队列 信号量 集合 队列 在队列中添加元素 从队列中释放元素 Reference to existing queue in memory 选择队列中元素的数据类型 出列操作需要等待数据进入或者超时情况 生产者 / 消费者循环 后台服务模式 问:“我需要程序在后台运行,不要前面板,不要交互” 答:“采用VI属性和方法接口,足以使你控制后台运行的VI” 例子:一个网络服务监听程序,程序只需要接收与客户端Sockets的连接,实现三次握手,连接完成后将引用交给前端应用程序处理,同时继续监听。 后台服务模式 后台服务模式 应用程序启动模式 “我想设计一个启动画面,同时显示应用程序加载的进度,加载完毕后退出启动画面,运行主程序” 应用程序启动模式 1、SubVI目录2、启动应用程序.vi3、主程序“网络实验系统.vi” 代理模式 “我希望顶层VI(主VI)需要某个子VI时,才将其载入内存” “可以在应用程序中引入迟载入技术” 代理模式 总结 设计模式 简化LabVIEW开发过程
文档评论(0)