2013年11月11日 星期一

[原創] Consider constants for index array...

撰寫 LabVIEW 程式時,若用Index array時常常會拉一堆Index的常數, 這是否會對LabVIEW效能造成影響?

在編譯環境為:
LabVIEW 2013 (32 - bit)
Windows 8 64-bit

比較LabVIEW compiler以下6個程式碼編譯結果的差異


1,2的差別在連接線的常數

3,4的差別是計算和的順序

5,6的差別是,5含有沒用到的常數

比較compile完後各組的machine code差異,差異如下
1與2完全一樣 ,以後拉一堆常數也不用在意了
另外比較一下1和3,看看Index值有改變會怎麼樣,code size長度一樣所以計算時間應該是一樣的,下面有些零散的紅點只是address的變化
3與4改變計算和的順序,大概也是5~7行assembly指令的差別
5與6只差在5的Block Diagram多了不必要的常數加法乘法, LabVIEW compiler果然會無視掉,以後修改程式時可以把舊的算是留著不接,反正沒影響 ...
結論:
Index Array 的常數看來拉多拉少是沒有影響的,程式碼中沒有用到的常數運算看起來也會被編譯器無視掉.

PS.事實上也有另外做過常數擺在迴圈內外的比較,結果是有差異但是編譯後的機械碼長度記得也是一樣的.

沒有留言:

張貼留言