無論使用什么設計語言,不良的編程技術都會給一個應用的性能帶來負面影響,對一個嵌入式應用尤其如此。盡管對于絕大部分應用來說,高效率的編程技術是重要的,但對于嵌入式應用所工作的資源極度缺乏的環境,則要求對性能和存儲器管理給予特別的關注。
本文的討論將圍繞著新的LabView嵌入式開發模塊進行,這種新工具為嵌入式應用開發人員提供了圖形化系統設計手段。該工具允許用戶直觀地設計算法并進行交互式調試。下面是一些有助于編程師更有效使用LabView開發嵌入式應用的技巧。這些技巧中的許多也適用于其它高級工具。
動態分配存儲器技術
動態存儲器分配是一項編程師應盡可能避免的復雜操作。例如,如果動態分配出現在將數據存儲到數組內的一個循環內,那么它尤其有害。避免在一個循環內動態分配存儲器的常用方法是在該循環開始執行前,為每個數組預分配所需的存儲空間。
移位寄存器與隧道技術
LabView 的移位寄存器與隧道使數據進/出循環。工程師還利用移位寄存器在一個循環的每次執行之間傳遞數據。當數據用一個輸入隧道傳進一個循環時,LabView必須拷貝該數據并將該拷貝數據送出來進行下線修改。為了確保原始數據對該循環的下次迭代執行時保持不變,這樣做是必需的。工程師也可以通過用一個移位寄存器把數據傳進該循環的方法來避免拷貝。這樣就消除了不必要的拷貝,從而加快了運行速度。
循環中的大常數技術
如果在循環內部放置一個常數,會使循環的每次執行都拷貝這個數據,從而加大執行時間和存儲器使用率。工程師可以避免這個情況,做法是把該常數移出該循環,或者用本地變量把數據傳遞到循環中。
數據類型強制轉換技術
LabView 開發環境只要有可能就自動地處理數據類型的沖突,其做法是把較小的數據類型轉換成較大的數據類型。例如,如果在一個整數和一個浮點數之間發生一個類型沖突,那么LabView就把該整數轉換成一個浮點數,隨后再執行運算操作。這個轉換的代價是昂貴的,而且在許多情況下是不必要的。在大多數情況下,工程師可以通過為每個變量選取正確的數據類型來避免強制轉換。但是,如果該數據必須被強制轉換,則應在將其送去進行操作運算或函數計算前就完成轉換,這樣效率將會更高些。
簇技術的應用
當把異構數據捆綁到易管理的數據包中時,簇是有用的,比如說C語言結構(C Structs)。然而,此時除了要考慮的全部數據外,數據內容的相關信息也必須和這些數據一起傳遞。因此,有的時候,尤其是在把數據傳到subVI時,相對于一個捆綁的簇而言,未捆綁的數據元素可以增加用戶應用的運行速度。
盡管類似LabView這樣的高級編程語言有助于工程師更快地部署其應用,但注意可提高代碼性能的細節是很重要的。通過注意這些細節,有助于工程師快速開發一個高效率的應用。
評論
查看更多