請問各位先進~~
小的最近在做一個生產用的測試程式,因為有產能的壓力,所以程式所花的時間不能太長,而現今小的遇到一個問題,當小的將人機介面打開,測試時間會在十秒左右,而若將介面縮到最小,則測試的時間能縮到只剩四秒,不知道是不是因為小的有改變元件的圖型,如用原先labview預設的元件,則時間大概在六秒內,所以想請問各位先進,小的有沒有辦法能在保留原先的人機介面條件下改善程式效能,謝謝
小的知道只有文字不太能完全表達小的所需,但因為受限於公司,所以小的不方便就程式上傳,還請各位先進見諒
pixonronald40505.5095833333
確實會有你說的現象存在。
嘗試不要再人機介面擺放過多資訊。
比如說waveform或table裡面的資料適量就可以了,不要全部都放進去。
此外,在螢幕外面的人機介面,也會占用記憶體,所以不必要的人機介面要適當刪除。
隱藏人機介面,是沒用的。要刪除或縮減資料量,才有用。
因為之前已發現有這個問題,所以小的嘗試就不必要的資訊隱藏起來,也只能縮到剩目前的時間,而人機介面老闆已經看過了,再改成不漂亮的老闆會不同意ORZ,小的發現程式會等待顯示完才去進行下一個動作,所以小的有想過,如將程式截值計算和顯示分離,不知道會不會比較快,但又受限程式功力沒有完成,所以才想上來尋各位先進的幫忙,但還是相當感謝Benjamin的建議~
這樣說來搞不好LabVIEW Intermedia 1 (現在不知道是放在Core2 還是 Core3裡) 的Lab很適合你的問題,這個劇院燈光系統使用Event base的Producer/Consumer Design Pattern (這個pattern在Menu\File\New...裡,Design Patterns下面找得到)。
換言之只有畫面要更新的資料到了,Producer Loop才會發event叫醒負責更新畫面的Consumer Loop,同時把資料或陣列Enqueue到Queue裡buffer起來 (到這裡便算是 "射後不理",Producer Loop又回頭去擷取資料或運算了),更新畫面的Consumer Loop收到event後叫醒對應的case,把Queue裡資料Dequeue出來更新Frant Pannel元件,因為畫面更新與擷取運算分屬不同的Loop,多核心CPU就可以分配任務給不同的核心,畫面更新與擷取運算脫鉤 (其實擷取與運算也可以脫鉤,也是把Queue當成FIFO用),各自平行處裡,提升程式執行速度。