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