资源预览内容
第1页 / 共29页
第2页 / 共29页
第3页 / 共29页
第4页 / 共29页
第5页 / 共29页
第6页 / 共29页
第7页 / 共29页
第8页 / 共29页
第9页 / 共29页
第10页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
提升LabVIEW程序性能的若干编程技巧概述 基于事件驱动的编程机制 LabVIEW程序内存管理 动态调用VI 数据类型转换 合理内存分配 用户界面性能提升 自动代码分析LabVIEW中基于事件驱动的编程LabVIEW事件示例 按下鼠标 键盘按键 前面板的用户交互LabVIEW 事件结构 什么是事件结构? 带有多个子框图的结构节点, 就像条件结构 事件结构是如何工作的? 当面板上事件发生时才被唤醒 自动执行相应事件框图内的事件代码 当处理完成相应事件后便结束,并不一直 循环等待为什么要使用事件结构 ? 用更简单的事件处理替代原来的查询循环 最小化 CPU 的使用 不会遗漏用户界面交互事件 可检测更多的交互事件 编程生成您自己的事件使用事件结构模板 状态机 并行循环VI架构 队列信息处理器 生产者/消费者 (数据) 用户接口事件处理器 生产者/消费者 (事件) 根据需要组合或扩展各种结构演示1: LabVIEW 事件结构编程内存管理措施:提高程序性能的关键 适时选择动态调用子VI 数据类型转换 合理内存分配 尽可能减少前面板刷新监测VI性能和内存工具性能分析性能和内存 监测VI执行时间和内存占用在程序中动态调用子VI321减少程序占用内存以及载入时间打开VI引用 通过引用节点调用 关闭引用典型的VI层次顶 层VI数据采集 VIs保存报表 VI校准VI文件 I/O VIs常用任务. 启动时加载.非常用任务. 调用时加载.2配置 VI加载 LabVIEW 8.201演示2: 动态加载 VI调用库函数的改进在LabVIEW 8.20中动态加载和卸载DLL 强制点表明连接了两种不同的数据类型 LabVIEW中类型强制需要数据备份 涉及大数组的类型强制会占用大量内存数据类型转换推荐的类型转换方式 更好的解决方式是在随机数创建时进行转换 避免转换大块数据缓存自定义类型强制转换点的颜色工具选项颜色 实现强制转换点颜色改变 合理的内存分配 过多进行内存重新分配占用很大开销 需要限制可能导致内存重新分配的相关函数 创建数组 连接字符串18.7秒内创建一个数组 非常慢因为每个循环都涉及内存重新分配0.42秒内创建一个数组 快很多因为仅有单个内存分配 0.40秒内创建一个数组 最快也是最简洁的方法查看缓冲区分配显示缓冲区分配 显示程序中内存分配的位置演示3:LabVIEW 内存分配提高用户界面的性能 输入和显示控件属性以及调用节点都会降低 应用程序速度 设计subVI 的前面板在执行中保持关闭来减 少显示开销 强制线程转换为UI线程 可以在完成时强制UI更新 线程转化回初始线程首选的用户界面更新方法VI引用前面板引用禁止前面板使用 延迟前面板刷新 在多刷新时禁止前面板32145更改使能前面板32145演示4:界面性能LabVIEW VI 分析器工具 LabVIEW工具包附件* 通过60+ 的可配置测 试自动分析代码 性能 分格 交互式的检测错误 生成定制报表*包括在NI开发者套件核心板内VI 分析器 与性能相关的测试 循环内数组和字符串 强制类型转换点 使能的调试 While循环中的等待 VI的大小 数组默认值 结构体里面隐藏的对 象 全局变量和局部变量 未使用代码 子程序框图内已连线 的接线端 顺序结构的使用演示5:VI 分析器工具总结 使用事件驱动编程将处理器占用降到最低 动态加载VI改进内存占用和初始加载时间 减少内存重新分配以提高运行速度 通过自动代码检测定位性能问题
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号