close

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

本文將討論新的
LabView嵌入式開發模組,這種新工具為嵌入式應用開發人員提供了圖形化系統設計方法。該工具允許用戶直觀地設計演算法並進行互動式除錯。以下一些技巧將有助於程式設計師更有效使用LabView開發嵌入式應用。這些技巧也適用於其它高階工具。 

動態分配記憶體技術:動態記憶體分配是一項程式設計師應盡可能避免的複雜作業。如果動態分配出現在將數據儲存到陣列的迴圈內則是特別不利的。避免在一個迴圈內動態分配記憶體的常用方法是在該迴圈開始執行前,為每個陣列預分配所需的記憶體空間。

移位暫存器與通道(tunnel)技術:LabView的移位暫存器與通道技術將使數據進/出迴圈。工程師可利用移位暫存器在一個迴圈的每次執行之間傳遞數據。當數據用一個輸入通道傳遞到一個迴圈時,LabView必須拷貝該數據並將該拷貝數據送出來以進行修改。這種做法可確保原始數據在下次迴圈執行時保持不變。工程師也可以透過一個移位暫存器把數據傳遞到該迴圈的方法來避免拷貝。如此將消除不必要的拷貝,因而加快執行速度。 

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

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

叢集技術:當把異質數據整合到易管理的套裝程式中時,像C語言結構(C Structs)的叢集相當有用。然而,此時除了要考慮的全部數據外,數據內容的相關資訊也必須和這些數據一起傳遞。因此,有的時候,特別是在把數據傳到subVI時,相對於一個整合的叢集而言,未整合的數據元素可以增加用戶應用的執行速度。

儘管類似LabView這樣的高階程式語言有助於工程師更快地部署其應用,但注意可提高程式碼性能的細節是很重要的。透過注意這些細節,有助於工程師快速開發一個高效率的應用。

作者:Jack Jakkidi

產品工程師

美商國家儀器公司

arrow
arrow
    全站熱搜

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