labview深入探索----局部變量,屬性節點和數據流的性能比較
在第三個框圖中,最初我用的是和上兩個框圖同樣的運行次數,等的10幾分鐘都無法自行完畢,沒辦法運行次數降至原來的1/1000,那實際運行時間應該是4091MS*1000,居然需要一個多小時.
在三個框圖中,始終保持控制器的值不便,避免了控件更新最速度造成的影響.
可以看出,LV倡導的數據流的速度是最快的,局部變量略低一些,而屬性節點對速度的影響已經是不能不考慮的事情了.
屬性節點對程序效率的影響為何如此驚人那,基于WINDOWS操作系統的考慮,任何涉及到界面操作操作的都是基于WINDOWS消息隊列的,屬性節點的操作應該是通過控件類,是屬于界面接口線程的
可見,寫屬性節點耗費的時間是讀屬性節點的100多倍.
通過以上的比較,如果不是必要的話,盡量不要通過屬性節點來傳遞數據,對于一個不顯示的子VI,更是如此,任何涉及到屬性節點的操作都會導致前面板載入內存,不但增加了內存的使用量,也同時引起的速度的急劇下降.
所以,在編程中一下幾點是需要注意的:
1.在不需要顯示的子VI中一定不要使用屬性節點,需要數據傳遞,如果數據流無法實現,采用局部變量是比較好的選擇.
2.對于需要顯示的主界面,不要在循環中重復調用屬性節點,可采用事件結構或者狀態機方式,或者用上升下降沿來判斷,保證一次性更改,一定要避免重復調用.
3.局部變量雖然用增加內存復制的問題,但是對不涉及很大的比如數組結構,可以不避考慮,至于數據競爭的問題,可以在編程中仔細考慮避免,在很多書籍中都提到了要盡量避免使用局部變量,通常給的例子都是如何用局部變量來結束兩個并行循環,如果只需要實現這樣的功能,LV根本就必要提供局部變量這種方便的編程方式了.
評論