999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

淺析嵌入式程序設計中的優化問題

2017-10-18 10:35:12崔曉康高潤秋王芮袁明芊仵松頎
智富時代 2017年8期

崔曉康+高潤秋+王芮+袁明芊+仵松頎

【摘 要】隨著人們對嵌入式應用性能需求的提高,嵌入式程序的運行效率逐漸得到關注。本文根據嵌入式系統的特點與應用環境,從四個方面提出了基于C語言的嵌入式程序設計優化方法,提高了嵌入式程序的性能,對嵌入式程序設計開發人員具有借鑒價值。

【關鍵詞】嵌入式系統;程序設計優化;性能

隨著經濟和技術的發展,嵌入式系統得到了快速的發展,低功耗、低成本、低體積,而且高性價比。這些優點使得其得到了廣泛應用,大到航天領域,小到智能終端領域。盡管嵌入式系統發展迅速,但嵌入式微處理器相對于桌面級的處理器而言存在一定的差距。這就使得嵌入式系統對運行在嵌入式微處理器上的程序有相對苛刻的要求,特別是運行時間和空間方面的要求。因此,對運行在嵌入式系統中的程序進行優化,可大大降低嵌入式系統的功耗,從而提高運行時間,而且可以提高程序的運行效率,滿足嵌入式程序對性能方面的需求。本文將就如何對嵌入式程序進行優化展開討論。

一、嵌入式系統

嵌入式系統即控制、監視或者輔助裝置、機器和設備運行的裝置。根據該定義可知,嵌入式系統是硬件和軟件的綜合體,而且包含機械等裝置。

嵌入式系統以微處理器及軟件為核心部件,具有方便、靈活地嵌入到其他應用系統的特征,本身也是可執行的獨立系統。

以微處理器類型劃分的化,嵌入式系統可以分為以單片機為核心的嵌入式單片機系統、以工業計算機板為核心的嵌入式計算機系統、以DSP為核心的嵌入式數字信號處理器系統和以FPGA及軟CPU為核心的嵌入式SOPC系統等。

嵌入式程序是嵌入式系統軟件的組成,包括系統程序和應用程序。系統程序運行在操作系統核心態,應用程序運行在用戶態。近年來,為了更加高效地開發嵌入式程序,廣泛采用C語言來進行開發。本文將就C語言設計的程序如何進行優化進行論述。

二、嵌入式程序設計優化

程序優化是指在不改變程序功能的情況下,對程序的結構、代碼、算法等進行裁剪、變換、替代等,使得修改后的程序擁有比源程序更優的性能。更優的性能包括兩方面的涵義,一是代碼量更少、更精簡;二是程序運行速度更快,性能開銷更低。

運行速度優化是通過對程序的結構、算法等進行修改,采用更加高效的結構和算法來實現同一功能,從而使得程序的運行時間得到所短。代碼優化指的是在對應用程序功能不影響的情況下,對冗余代碼進行刪除、部門程序語句進行替換等實現代碼量的減少。

事實上,這兩者是一對矛盾體,為了使得程序運行速度更快,往往需要添加額外的優化代碼。但隨著存儲技術的發展,RAM、ROM等不在稱為限制程序大小的因素。所以,本文只討論嵌入式程序運行速度優化問題。

1.嵌入式程序設計優化原則

嵌入式程序設計優化主要遵循的原則包括:

(1)等價性原則,優化前后程序的功能是等價的,不能因為代碼的變化改變程序的功能;

(2)有效性原則,即優化后的程序需要達到預期目的,要么使得程序的運行速度更快,要么使得程序的代碼量更少;

(3)經濟性原則,即對程序優化投入的人力物力要滿足以盡量小的代碼獲得盡量高的收益,即更佳的優化效果。[1]

2.通用優化方法

通用的優化方法主要從語言角度出發對程序進行優化,即對C程序在嵌入式系統上的優化。

(1)循環優化

循環是C語言中常用的一種結構。合理的使用循環能夠使得程序功能很強大,但是循環帶來的開銷是很高的。本文對循環的優化主要采用三種策略。一是使用遞減循環。變循環變量遞加為遞減,可以減少循環終止條件測試的開銷,特別是在嵌套循環的情況下,可以取得更好的效果。二是優化循環退出條件。如果循環不能夠及時退出,將有可能使得程序多執行多次循環甚至造成死循環。三是對相關循環進行合并,減少循環的個數。將相鄰的循環進行合并,合并原則是不會出現變量相關。

(2)函數優化

函數是C程序中最主要的組成,一個程序中包含若干個函數。函數優化從三個方面考慮。一是使用內聯函數,減少遞歸函數的使用。遞歸雖然使得程序更加簡潔,但是遞歸需要花費更多的時間進行函數調用,而且函數調用時使用堆棧而不是寄存器也使得程序開銷更大。二是函數參數的優化設計。這一點是與硬件體系相關的。以ARM為例,函數參數傳遞先通過寄存器實現,然后再通過堆棧。但是寄存器資源有限,一般為4個。所以在進行函數設計時應盡量讓函數參數小于等于4。三是使用函數值表。通過函數值表,可以減少某些耗時的數學函數帶來的時間開銷。

(3)變量優化

變量優化主要考慮到全局變量和局部變量[2]。一般減少全局變量的使用,多使用局部變量。除了性能上的考慮,全局變量對程序自身的安全也存在威脅。過多的全局變量還會帶來過度的存儲空間開銷。

(4)內聯匯編的使用

內聯匯編是指在C/C++代碼中嵌入的匯編代碼,與全部是匯編的匯編源文件不同,它們被嵌入到C/C++的大環境中。由于內聯匯編以匯編代碼實現,比C代碼效率高。因此,適當的使用內聯匯編,對程序的運行速度提高具有一定的促進作用。

3.基于硬件的優化方法

該方法主要使用硬件資源來對程序進行優化。一是使用寄存器變量[3]。寄存器的存取速度遠高于內存的存取速度。對一些經常使用的變量,可以通過分配指定寄存器作為其存儲單元的方法,在一定程度上提高程序運行效率。另外,對程序優化時候可以考慮CPU的流水線處理,兩者相互結合效果更好。

4.基于指令集的優化方法

指令集優化指的是從嵌入式系統支持的指令集角度入手,根據指令集的優缺點進行優化。一是對不包含的指令進行優化。比如除法指令,ARM結構下的指令集并沒有。進行除法運算時通過調用庫函數來實現,而庫函數實現的除法效率低下。因此,對除法進行優化,改成使用乘法指令來實現。二是條件發的合理使用。ARM指令包含有一個條件碼,在條件碼滿足一定條件下執行某種功能。如果要實現的功能與條件碼相關,那么利用該條件碼可以使得判斷更迅速。

5.基于編譯器的優化方法

編譯器優化主要用來對代碼進行語法檢查、語句優化以及安全性方面的檢查。但高級的編譯器可以對程序的運行效率進行優化。比如程序中有一個常量乘法運算,那么在編譯之后程序運行之前該乘法運算的結果已經得出。另外,編譯器會對循環做優化,通過循環展開,減少比不要的循環;還可以將一些尾遞歸轉換為循環實現,提高效率。

三、結束語

嵌入式系統的廣泛使用使得運行之上的程序性能要求更高。本文討論了嵌入式程序設計優化問題。從通用方法、硬件優化、編譯器優化、指令集優化等方法進行了探討,提出了一些相關優化策略,對提高程序的運行效率具有促進作用。

【參考文獻】

[1] 王磊, 李鑫. 淺析嵌入式程序的優化[J]. 電腦知識與技術: 學術交流, 2012, 8(1): 192-193.

[2] 劉鋒, 張曉林. 淺析嵌入式程序設計中的優化問題[J]. 單片機與嵌入式系統應用, 2006 (12): 66-68.

[3] 劉侃, 張永泰, 劉洛琨. ARM 程序設計優化策略與技術[J]. 單片機與嵌入式系統應用, 2004 (4): 70-72.

主站蜘蛛池模板: 一级看片免费视频| 国产幂在线无码精品| 精品国产自在在线在线观看| 视频在线观看一区二区| 精品久久综合1区2区3区激情| 免费啪啪网址| 香蕉视频在线观看www| 国产亚洲精品资源在线26u| 色综合久久88| 亚洲国产欧美目韩成人综合| 伊人久久影视| 99激情网| 国内精品九九久久久精品| 国产一区在线观看无码| 欧美成人精品一区二区| 成人福利在线免费观看| 天天躁日日躁狠狠躁中文字幕| 亚洲国产精品国自产拍A| 欧美三级自拍| 久久精品亚洲专区| 久久国产成人精品国产成人亚洲 | 免费人成网站在线高清| 丝袜久久剧情精品国产| 青青草原偷拍视频| 青草视频在线观看国产| 久久天天躁狠狠躁夜夜躁| 国产精品hd在线播放| 综合色亚洲| 国产96在线 | 国产SUV精品一区二区6| 亚洲色图欧美视频| 色综合成人| 亚洲无码一区在线观看| 野花国产精品入口| 日本黄色不卡视频| 亚洲一区毛片| 99久久精品免费看国产电影| 亚洲第一区在线| 伊伊人成亚洲综合人网7777| 国产91小视频| 少妇高潮惨叫久久久久久| 国产99免费视频| 97人人模人人爽人人喊小说| 亚洲综合18p| 国产成人精品亚洲日本对白优播| 全裸无码专区| 精品久久香蕉国产线看观看gif| 漂亮人妻被中出中文字幕久久| 国产精品片在线观看手机版 | 国产微拍精品| 欧美激情网址| 99这里精品| 波多野结衣中文字幕久久| 亚洲天堂区| 欧美亚洲综合免费精品高清在线观看| 日本三级欧美三级| 日韩毛片视频| 国产自在线拍| 国产 在线视频无码| 亚洲精品无码日韩国产不卡| 免费看一级毛片波多结衣| 久久久91人妻无码精品蜜桃HD| 亚洲国产黄色| 狠狠色综合网| 国产精品太粉嫩高中在线观看| 欧美成人午夜视频免看| 欧美a√在线| 亚洲精品福利视频| 超碰91免费人妻| 亚洲综合国产一区二区三区| 亚洲av无码牛牛影视在线二区| a在线观看免费| 亚洲国产成熟视频在线多多| 毛片久久久| 亚洲综合极品香蕉久久网| 国产精品综合色区在线观看| 国产综合网站| 精品国产中文一级毛片在线看| a级高清毛片| 国产综合网站| 欧美人与动牲交a欧美精品| www.99在线观看|