關(guān)于Labview使用過程中優(yōu)化程序的幾點(diǎn)體會
泰州技師學(xué)院 張楊钖 仲寒兵 2020/9/22 21:31:26
摘要:對于Labview的入門使用者來說,編程時(shí)有時(shí)按部就班,有時(shí)急于實(shí)現(xiàn)功能而忽略細(xì)節(jié),文中通過介紹筆者編程過程遇到幾處細(xì)節(jié),使程序得到優(yōu)化,減少內(nèi)存。
關(guān)鍵詞:Labview、細(xì)節(jié)、優(yōu)化
Labview是一門圖形化編程語言,封裝了很多函數(shù)控件,方便了我們的入門使用,但同時(shí)很多細(xì)節(jié)會被忽略,會使得內(nèi)存白白浪費(fèi),弄清楚一些優(yōu)化技巧能大大提升程序的使用效率。在此就談一談程序框圖里會被忽略而導(dǎo)致內(nèi)存增加的細(xì)節(jié)。
1、消除程序框圖中的強(qiáng)制轉(zhuǎn)換點(diǎn)
所謂強(qiáng)制轉(zhuǎn)換點(diǎn)就是數(shù)值的不同數(shù)據(jù)類型之間相互轉(zhuǎn)換時(shí)出現(xiàn)的紅點(diǎn),這會導(dǎo)致LABIEW數(shù)據(jù)備份,浪費(fèi)內(nèi)存
2:避免對較大的數(shù)據(jù)進(jìn)行轉(zhuǎn)換。
比如數(shù)組、簇。應(yīng)該在他們之前進(jìn)行轉(zhuǎn)換。
舉一個例子:求1000以內(nèi)的完數(shù),就是一個整數(shù)等于他所有的約數(shù)和,例如6=1+2+3,28=1+2+4+7+14。按初學(xué)的習(xí)慣寫的程序如下圖:
圖中畫圈的索引數(shù)組,輸入的是一個有1000行列的二維數(shù)組,再在這個數(shù)組里面進(jìn)行索引運(yùn)算,會降低運(yùn)行效率,可以用一個程序去看看他的運(yùn)行時(shí)間。
下面換一個經(jīng)過我優(yōu)化的程序來看下
通過 “工具﹥﹥性能分析﹥﹥顯示緩沖分配”可以看出程序給數(shù)組分配了內(nèi)存的僅僅在“初始化數(shù)組”和“數(shù)組插入”函數(shù)處,并且把索引數(shù)組放置里層的for循環(huán),可以使用for循環(huán)數(shù)組隧道的條件特性,更減少了內(nèi)存的分配。下面我們再來看看這個程序執(zhí)行時(shí)間
可以明顯看出程序執(zhí)行間比原來的減少了一半還多。實(shí)際上能減少在循環(huán)里使用數(shù)組,尤其像第一個沒經(jīng)過優(yōu)化的,for循環(huán)里還存在2D數(shù)組,效率就更低了,就不推薦使用,但是比如上面經(jīng)過優(yōu)化的程序還可以優(yōu)化,不使用數(shù)組:
由此可見,數(shù)組的正確使用,以及思維對程序內(nèi)存起著很重要的作用。
3:在創(chuàng)建數(shù)組時(shí),盡量不要在循環(huán)里使用“創(chuàng)建數(shù)組”函數(shù)
他會不斷分配內(nèi)存給數(shù)組,合理的方法應(yīng)該是先創(chuàng)建一個確定大小的數(shù)組,再在循環(huán)里使用”替換數(shù)組元素”函數(shù)。
除此之外,使用labview時(shí),如果函數(shù)傳入的值與其默認(rèn)值相同,那么就使用默認(rèn)值,因?yàn)轭~外使用也會增加內(nèi)存。函數(shù)與函數(shù),或者函數(shù)與控件之間的連線避免連線不必要的曲折,盡量要遵從左至右,從上到下數(shù)據(jù)流,使得程序框圖更加容易理解,美觀。不要只想實(shí)現(xiàn)功能就好,最終一個小程序一個屏幕都放不下。以上僅是個人在使用過程中的幾點(diǎn)體會,不足之處請多多指教。
參考文獻(xiàn):
Labview虛擬儀器從入門到測控應(yīng)用130例 ---- 李江全、任玲等編著
Labview2018從入門到精通實(shí)戰(zhàn)案例版 ----天工在線編著
|