LABVIEW的深入探索之内外有别的条件结构
在条件结构中,处理显示控件有两种完全不同的方式,这两种方式虽然表明上看差别不大,在具体编程中都可能使用过,但是对于大型数据处理,比如大的数组,运行效率差别极大,可能不经意间造成程序运行缓慢,且不易查错。
方法一:条件结构外处理显示输入控件和显示控件。这种方法中,输入控件和显示控件均位于条件结构分支之外。如下图所示:
方法2:条件结构内处理输入控件和显示控件控件。这种方法中,输入控件和显示控件位于条件结构分支中,从程序框图上看,似乎更为简洁,但却是非常错误的,如下图所示。
方法2中,错误分支中没有进行任何处理,输入控件和显示控件位于无错误分支中。
OUT,VI和IN.VI实现的功能是完全相同的,但是运行效率却是天壤之别,数组越大,区别更为明显。当然不同的计算机上,运行时间会有区别。下面是测试程序框图。
下面是测试结果,二者的运行时间相差20000多倍。
下面引入一个“顶层程序框图”,顶层程序框图常见于LV爱好者的文章中,LV的相关书籍中没有这样的概念。OUT.VI中,输入控件位于左侧,显示控件位于右侧,均位于所有结构之外,所有结构之外称作“顶层程序框图”,类似于C语言中的形参部分。
顶层程序框图中,运行效率是极高的,这是因为在进入子VI之前,LV很容易可以断定,缓存是可以重用的,因此不需要在循环中,每次复制数组。但是输入控件和显示控件位于条件分支内部时,LV可能无法判定缓存是可以重用的,因此采用的值复制的方法,这样牺牲了效率,但是保证了正确的结果。
方法二中,表面上看似乎更为合理,但却是错误的,因此可以得出结论,子VI中的输入控件和显示控件应该位于顶层程序框图中,不应该位于任何结构之中。
LABVIEW内外有别条件结 相关文章:
- 频宽、取样速率及奈奎斯特定理(09-14)
- 为什么要进行信号调理?(09-30)
- IEEE802.16-2004 WiMAX物理层操作和测量(09-16)
- 为任意波形发生器增加价值(10-27)
- 基于PCI 总线的高速数据采集系统(09-30)
- 泰克全新VM6000视频测试仪助力数字电视等产品测试 (10-06)