LabVIEW 单进程共享变量与全局变量
单进程共享变量与LabVIEW全局变量相似。事实上,单进程共享变量的实现是在LabVIEW全局变量的基础上增加了时间标识功能。
为了比较单进程共享变量与LabVIEW全局变量的性能,NI编写了多个基准测试VI,以测量VI每秒钟对LabVIEW全局变量或单进程共享变量进行读写的次数。下图显示的是单进程共享变量读取基准测试的程序框图。单进程共享变量写入基准测试和LabVIEW全局变量读取/写入基准测试遵循同一模式。
图单进程共享变量读取基准测试VI
综合读取/写入测试还包括了验证每个写入点都在同一循环中被无损读回的验证代码。
T1的测试结果
下图给出了T1的测试结果。结果表明,单进程共享变量的读取性能低于LabVIEW全局变量。而从写入性能以及读取/写入性能来看,单进程共享变量略低于LabVIEW全局变量。单进程共享变量的性能会受到是否启用时间标识功能的影响,因此如果没有必要,建议关闭时间标识功能。
方法和配置部分讲述了基准测试的具体方法和测试配置的细节。
图单进程共享变量与全局变量的性能比较
单进程共享变量与实时FIFO
NI通过可持续吞吐量的基准测试来比较启用了FIFO的单进程共享变量和传统实时FIFO VI的性能。此基准测试中还测试了传送数据的大小或负载对以上两种实时FIFO实现的影响。
测试包括一个用于生成数据的实时优先级循环(TCL),以及一个用于消耗数据的标准优先级循环(NPL)。 NI通过对一系列双精度标量和数组数据类型进行测试来确定负载大小的影响。标量类型决定了负载为双精度数值时的吞吐量,数组类型决定了其余负载类型的吞吐量。在无数据丢失的情况下执行上述两个循环时的最大可持续速度就是该测试记录的最大可持续吞吐量。
图24给出了实时FIFO基准测试的简化程序框图,其中略去了许多用于创建和注销FIFO的必要代码。需要注意的是从LabVIEW 8.20开始,引入了一个可以替代此处所示FIFO子VI的新FIFO函数。本文中的数据图表即通过该FIFO函数得到,它比之前8.0.x中FIFO子VI的性能更好。