close
無論使用什麼設計語言,不良的編程技術都會給一個應用的性能帶來負面影響,對一個入式應用尤其如此。儘管對於絕大部分應用來說,高效率的編程技術是重要的,但對於嵌入式應用所工作的資源極度缺乏的環境,則要求對性能和記憶體管理給予特別的關注。

本文的討論將圍繞著新的
LabView嵌入式開發模組進行,這種新工具為嵌入式應用開發人員提供了圖形化系統設計手段。該工具允許用戶直觀地設計演算法並進行互動式調試。下面是一些有助於編程師更有效使用LabView開發嵌入式應用的技巧。這些技巧中的許多也適用於其他高級工具。

動態分配記憶體技術

動態記憶體分配是一項編程師應盡可能避免的複雜操作。例如,如果動態分配出現在將資料存儲到陣列內的一個
迴圈內,那麼它尤其有害。避免在一個迴圈內動態分配記憶體的常用方法是在該迴圈開始執行前,為每個陣列預分配所需的存儲空間。

移位寄存器
與隧道技術
LabView的移位寄存器與隧道使資料進/出迴圈。工程師還利用移位寄存器在一個迴圈的每次執行之間傳遞資料。當資料用一個輸入隧道傳進一個迴圈時,LabView必須拷貝該資料並將該拷貝資料送出來進行下線修改。為了確保原始資料對該迴圈的下次迭代執行時保持不變,這樣做是必需的。工程師也可以通過用一個移位寄存器把數據傳進該迴圈的方法來避免拷貝。這樣就消除了不必要的拷貝,從而加快了運行速度。

迴圈中的大常數技術

如果在迴圈內部放置一個常數,會使迴圈的每次執行都拷貝這個資料,從而加大執行時間和記憶體使用率。工程師可以避免這個情況,做法是把該常數移出該迴圈,或者用本地變數把資料傳遞到迴圈中。

資料類型強制轉換技術

LabView開發環境只要有可能就自動地處理資料類型的衝突,其做法是把較小的資料類型轉換成較大的資料類型。例如,如果在一個整數和一個浮點數之間發生一個類型衝突,那麼LabView就把該整數轉換成一個浮點數,隨後再執行運算操作。這個轉換的代價是昂貴的,而且在許多情況下是不必要的。在大多數情況下,工程師可以通過為每個變數選取正確的資料類型來避免強制轉換。但是,如果該資料必須被強制轉換,則應在將其送去進行操作運算或函數計算前就完成轉換,這樣效率將會更高些。

簇技術的應用

當把異構資料捆綁到易管理的資料包中時,簇是有用的,比如說C語言結構(C Structs)。然而,此時除了要考慮的全部資料外,資料內容的相關資訊也必須和這些資料一起傳遞。因此,有的時候,尤其是在把數據傳到subVI時,相對於一個捆綁的簇而言,未捆綁的資料元素可以增加用戶應用的運行速度。
儘管類似LabView這樣的高級編程語言有助於工程師更快地部署其應用,但注意可提高代碼性能的細節是很重要的。通過注意這些細節,有助於工程師快速開發一個高效率的應用。
作者:Jack Jakkidi
產品工程師
美國國家儀器公司


arrow
arrow
    全站熱搜

    fishark 發表在 痞客邦 留言(1) 人氣()