我在LabVIEW 仪器驱动程序指南(第6.2节)中找到了这个注释:
如果您需要的终端数量多于建议的模式,请重新考虑VI上控件和指示器的分组.除错误输入和错误输出外,请避免使用群集来最小化终端数量.群集通常要求用户从群集中解包和重新绑定数据.
如果National Instruments不鼓励群集,那么"重新考虑对VI的控制和指标进行分组"的意思是什么?
我真的很喜欢使用集群,我认为他们已经改进了我的VI.我错过了什么吗?
我认为这可能是NI文档中的错误措辞.如果有意义的话,一次性写入或读取仪器或其驱动程序中的许多不同值,则群集是适当的数据类型.您希望尝试避免用户必须读取群集中的数据的情况,以便他们可以在更改一个值的情况下将其写回.使用集群的其他良好的一般原则,当然在可分发/可重用的代码,如仪器驱动程序,是:
将群集保存为严格的typedef
始终按名称捆绑/解除捆绑群集元素.
这样,您可以在不破坏现有代码的情况下更改群集中的内容.
捆绑和分拆是相对简单的处理器和内存命中,因此除非您在紧密循环中工作,否则性能不会令人担忧.
但是,当连接器窗格看起来像杂色豪猪时,许多人会开始将所有内容放入"巨型群集"输入中.虽然这确实有效(一段时间),但它最终会导致大量不必要的内存膨胀和调试痛苦,因为函数中不需要的东西仍会在代码中被复制.
更糟糕的是,最终可能会有不同的大型集群用于不同的VI,然后需要在结构之间进行转换.
我通常认为最好的是,当输入和输出开始变得过多时,返回并将一个VI重构成几个,每个都有一个更小,更明确定义的函数.