之前就想出一個專題聊聊關於增加程式效率、減少記憶體消耗的專題,不過這議題實在太大,每每理好思緒想開始寫,就會被其他事情羈絆。於是,我決定先將各各小議題先各自寫文章,最後再做統整,今天就使用For loop的Parallel來起手,因為他是最簡單、最快速、最顯著的修改方法。
Parallel Foor Loop 大約是2009後的功能,這功能有一段一時間了,但使用的人並不多,一大原因是目前的電腦處理速度很快,普通應用其實並不需要使用這功能。Parallel Foor Loop就如同字面上的英文意思: 同步Foor迴圈,如何做到同步呢?假設處理程式的主機使用的是4核心電腦,如果未開啟這功能時,Foor Loop只會使用單一核心來處理此段程式,但如果開啟此功能,就可以選擇以多核心來處理。當然,此功能有它的限制,下面介紹如何使用後在介紹其限制。
在For Loop 上按右鍵-->Configure Iteration Parallelism 設定並開啟此功能。
接著會彈跳出設定視窗
設定完後,就可以開始使用了。下面用2個Foor loop使用一樣的程式碼,唯一不同的是上面foor loop將 iteration parallelism功能開啟。
將兩段程式計時比較,注意,兩段程式不能同步跑唷,需要disable其中一個,才能精準測試。
測試後兩個Elapse Time比較,可以發現其顯著的不同!!幾乎差了10^4倍
當然使用這parallel會有限制,其限制也跟他的特性有關,因為開啟此功能後會,是多核心同步運行,其資料不會互相傳遞,限制如下:
- Feedback node
- Shift Register
- Conditional Terminal
- ....可查如下表
(此圖截自NI官網)
如果有多個迴圈需要分配時也可以參考下面寫法,達到CPU的分配,
(此圖截自NI官網)
詳細的使用,包含上面幾個圖的解釋,可以參考NI的白皮書: http://www.ni.com/tutorial/9393/en/
如果覺得文章有幫助,請不要吝嗇按下側邊的廣告唷~ 謝謝~
學習相關LabVIEW文章:
程式分享相關LabVIEW文章:
考取LabVIEW證照相關: