原创 局部变量全局变量属性VALUE三者使用比较

2008-7-3 22:07 3306 5 5 分类: 测试测量
今天看到一篇关于三者在编程时候使用比较,觉得对大家新编程的人来说很有启发性,因此就发上来和大家SHARE一下. 帖子如下:
之前看過一些文章,多半鼓勵使用property node的value來取代local variable的使用。不知道是我的觀念錯誤或是使用方法錯誤,今天突發奇想想要測試一下兩者之間的執行效率問題,我發現了一個很可怕的數據...兩者的測試方塊圖如下:
200719132234.jpg
200719132317.jpg
然後執行時間使用property node 與 local variable約為100:1


若真的是這樣子的話,使用property node不是反而增加程式運作時間嗎QQ


請各位大大解決我的迷思......


Re:局部变量全局变量属性VALUE三者使用比较


這個涉及到 Thread 的問題。 LabVIEW 是個具備管理 Multithread 的程式,
在 DAQ , File I/O , user I/O 是使用不同的 thread。「Property Node」、「Control Reference」與「user I/O」
是使用同一個 thread。

而「user I/O」是所有 thread 中最為匱乏的。所以如非必要,儘可能減少 roperty Node 的使用量。
可以參考底下的比較圖:

点击看大图
另外,可以在同一個 ropery Node 做完的設定,
就儘量在同一個 oerpery Node 做完,不然每多用一個
Peoperty Node 就多佔用一份記憶體。
佳:
200719133354.jpg
劣:
200719133438.jpg
針對提出的方式做出Local Variable,Global Variable及Property Node三個時間及效能上的比較.
点击看大图
在上圖中的Property_Node.vi執行2次,平均時間14.2812秒,而Local_Variable.vi及Gl obal_Variable.vi各執行5次平均時間0.1187及0.0562秒. 


但是值得大家討論的是,在Global_Variable.vi中,建立的Global Front Penal(Global.vi)雖然Global_Variable.vi只執行5次,但是總共呼叫Global的次數卻高達 400000次,這是因為每當執行到一次Global Variable時,就會去執行一次Global.vi.


在Global_Variable.vi中有8個Global Variable,Global_Variable.vi共執行5次,每次For Loop執行10000次,所以總執行次數400000=8X5X10000.


雖是這樣,但是執行的總時間還是只有0.25秒,平均時間=0.25/400000.


其實對整個執行時間沒有影響.

200719133649.jpg

文章评论0条评论)

登录后参与讨论
我要评论
0
5
关闭 站长推荐上一条 /2 下一条