一. 演算法和資料結構優化
1.二. 語言實現的優化針對應用的演算法優化,比如,在音訊編譯碼中,用fft實現時頻變換。
2.c語言級別的優化,如排序演算法的選擇。
3.資料結構的選擇,如果需要隨機訪問,則盡量選擇陣列,如果需要隨機插入刪除,則可以選擇鍊錶。
4.盡量用指標代替資料操作,大部分編譯對於指標會生成更小更快的**。
5.盡量使用和cpu位數相同的資料型別,這樣只需要去資料,不需要進行額外的運算。比如乙個cpu是32位的,如果你使用了8位的資料,編譯器還要進行截斷。
1.4.使用自加自減運算。
2.如果是dsp這種資料和指令匯流排分開的情況,可以在運算的同時load data。
3.幾種運算優化技巧:
a.取模(求餘)運算,轉化為&。a%8 -> a&7。前提是模數是2的冪次。
b.pow運算轉化為乘法。pow(a, 2.0) -> a*a。
c.乘除法轉化為位移。a*4 -> a<<2, b/4-> b>>2。
for迴圈中的注意事項:
a.5.不要在for迴圈中重複執行相同的計算。
b.對記憶體的訪問要盡量緊湊,這樣可以提高cache hit。
c.可以根據mcu中累加器,乘法器的個數,適當的展開迴圈。
d.如果可以,盡量使從大到小的迴圈計數,因為mcu一般都有0跳轉語句。
對switch的case進行排序,把概率大的case放在前面。
6.do{} while比while生成的**小。
7.將一些複雜的運算用查表代替,比如開方。
8.inline也是乙個優化的手段,不過要考慮時間和空間的平衡。
9.使用register變數,使用restrict告訴函式某個pointer指向的資料不會被其他pointer修改。
10.編譯選項的優化,使用intrinsic函式。
嵌入式C語言優化小技巧
嵌入式系統是指完成一種或幾種特定功能的計算機系統,具有自動化程度高,響應速度快等優點,目前已廣泛應用於消費電子,工業控制等領域.嵌入式系統受其使用的硬體以及執行環境的限制,非常注重 的時間和空間效率,因此選擇一種合適的開發語言十分重要.目前,在嵌入式系統開發中可使用的語言很多,其中 c語言應用得最廣...
嵌入式學習(二) 嵌入式系統C 語言
1 從 cpu 復位時的指定位址開始執行 2 跳轉至彙編 startup 處執行 3 跳轉至使用者主程式 main 執行,在 main 中完成 a.初試化各硬體裝置 b.初始化各軟體模組 c.進入死迴圈 無限迴圈 d呼叫各模組的處理函式 下面是幾個 著名 的死迴圈 1 作業系統是死迴圈 2 win3...
嵌入式C語言總結
這幾天花了兩天時間看了一些嵌入式c語言方面的內容,以下是一些讀書筆記,記錄一下。1 不能有返回值 2 不能向isr 傳遞引數 3 isr盡可能的短 4 printf有重入問題 1 中斷服務程式isr 2 硬體初始化 1 某io 晶元被定為在 cpu的儲存空間而非 io空間,而且暫存器對應於某特定位址...