国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

嵌入式系統(tǒng)中程序的優(yōu)化策略

2009-03-14 06:59王月青
新媒體研究 2009年4期
關(guān)鍵詞:面向?qū)ο?/a>嵌入式系統(tǒng)優(yōu)化

[摘要]嵌入式系統(tǒng)中的程序往往是運(yùn)行在有限的硬件資源環(huán)境中,而且大多具有實(shí)時(shí)性的要求,因此要對(duì)程序進(jìn)行優(yōu)化,盡量提高程序的執(zhí)行效率,減少程序的存儲(chǔ)空間。討論對(duì)嵌入式系統(tǒng)中的程序進(jìn)行優(yōu)化的方法和策略。

[關(guān)鍵詞]嵌入式系統(tǒng) 優(yōu)化 程序代碼 面向?qū)ο?/p>

中圖分類號(hào):TP3文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1671-7597(2009)0220063-01

一、引言

嵌入式系統(tǒng)是一個(gè)專用計(jì)算機(jī)系統(tǒng),完全封裝在其所控制的設(shè)備內(nèi)。與通用計(jì)算機(jī)不同,嵌入式系統(tǒng)執(zhí)行非常明確的預(yù)定義任務(wù)。而且,嵌入式系統(tǒng)的外形尺寸、功耗、外部適配器等各種特征必須滿足應(yīng)用的要求和限制;另外,一些嵌入式系統(tǒng)還具有實(shí)時(shí)性的要求。為了滿足嵌入式系統(tǒng)的實(shí)時(shí)性和有限存儲(chǔ)空間的要求,嵌入式程序要盡量提高運(yùn)行速度,減少存儲(chǔ)空間。因此,在嵌入式系統(tǒng)設(shè)計(jì)中要進(jìn)行程序的優(yōu)化以提高系統(tǒng)的性能,縮減產(chǎn)品的尺寸和成本。

對(duì)嵌入式程序進(jìn)行優(yōu)化主要從兩個(gè)方面入手:1.設(shè)計(jì)優(yōu)化;2.代碼優(yōu)化。

二、設(shè)計(jì)優(yōu)化

(一)面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù)

現(xiàn)代的程序設(shè)計(jì)普遍采用面向?qū)ο蟮脑O(shè)計(jì)方法。面向?qū)ο蟪绦蛟O(shè)計(jì)于20世紀(jì)60年代提出,以后逐漸發(fā)展和完善,出現(xiàn)了java、C++等面向?qū)ο蟮某绦蛟O(shè)計(jì)語言。面向?qū)ο蟪绦蛟O(shè)計(jì)的出現(xiàn)是計(jì)算機(jī)編程技術(shù)的重大進(jìn)步。它以對(duì)象為中心觀察、描述和處理問題,按照對(duì)象及對(duì)象之間的聯(lián)系來構(gòu)造軟件實(shí)體。

面向?qū)ο笫且环N自下而上的程序設(shè)計(jì)方法,它以數(shù)據(jù)為中心,類作為表現(xiàn)數(shù)據(jù)的工具,是劃分程序的基本單位。面向?qū)ο蟪绦蛟O(shè)計(jì)的基本方法就是把數(shù)據(jù)和對(duì)數(shù)據(jù)的處理函數(shù)封裝在一起,形成一個(gè)相對(duì)獨(dú)立的類模塊,類實(shí)現(xiàn)了數(shù)據(jù)與函數(shù)功能的有機(jī)結(jié)合。

(二)面向?qū)ο笤O(shè)計(jì)的優(yōu)化

類是面型對(duì)象程序設(shè)計(jì)的基礎(chǔ),通過類繼承可以最大限度地實(shí)現(xiàn)功能代碼的重用,減少程序的存儲(chǔ)空間。

調(diào)整繼承關(guān)系是優(yōu)化設(shè)計(jì)的一個(gè)重要方面,繼承關(guān)系能夠?yàn)橐粋€(gè)類族定義一個(gè)協(xié)議,并能在類之間實(shí)現(xiàn)代碼共享以減少冗余。在面向?qū)ο笤O(shè)計(jì)中,建立良好的繼承關(guān)系對(duì)優(yōu)化結(jié)構(gòu)是非常重要的。

在設(shè)計(jì)類繼承時(shí),使用自頂向下和自底向上相結(jié)合的方法。先創(chuàng)建一些功能類型,然后進(jìn)行歸納。如果在一組相似的類中存在公共的屬性和公共的行為,則可以把這些公共的屬性和行為抽取出來重新定義一個(gè)類作為基類。

三、代碼優(yōu)化

代碼優(yōu)化,就是采用更精簡的程序代碼來代替原有的代碼,使編譯后的程序運(yùn)行效率更高。以下是一些常用的優(yōu)化技術(shù)和技巧。

(一)盡量定義輕量級(jí)的構(gòu)造方法

在進(jìn)行類的設(shè)計(jì)時(shí),要盡量設(shè)計(jì)輕量級(jí)的構(gòu)造方法。在程序運(yùn)行過程中,除了創(chuàng)建顯示定義的對(duì)象外,還要?jiǎng)?chuàng)建很多臨時(shí)的對(duì)象,在創(chuàng)建類型的每個(gè)對(duì)象時(shí)都要調(diào)用類型的構(gòu)造方法。如果構(gòu)造方法過于復(fù)雜,就會(huì)降低程序運(yùn)行的效率。

(二)盡量定義局部變量,減少類成員變量的個(gè)數(shù)

少用全局變量,多用局部變量。全局變量是放在數(shù)據(jù)存儲(chǔ)器中的,太多的全局變量,會(huì)導(dǎo)致編譯器無足夠的內(nèi)存分配;而局部變量則大多定位于內(nèi)部的寄存器中。使用寄存器的操作速度比數(shù)據(jù)存儲(chǔ)器快,指令也更靈活,有利于生成質(zhì)量更高的代碼。

(三)代碼替換

使用周期短的指令代替周期長的指令,以降低運(yùn)算的強(qiáng)度。

1.減少除法運(yùn)算。用關(guān)系運(yùn)算符兩邊乘除數(shù)避免除法操作,還有一些除法和取模的運(yùn)算可以用位操作來代替。因?yàn)槲徊僮髦噶钪恍枰粋€(gè)指令周期,而“/”運(yùn)算則需要調(diào)用子程序,代碼長,執(zhí)行慢。例如:

優(yōu)化前if((a/b)>c)和a=a/4

優(yōu)化后if(a>(b*c))和a=a>>2

2.減少乘方運(yùn)算。例如:

優(yōu)化前a=pow(a,3.0)

優(yōu)化后a=a*a*a

3.使用自加、自減指令。例如:

優(yōu)化前a=a+1、a=a-l

優(yōu)化后a++、a--

對(duì)除法來說,使用無符號(hào)數(shù)比有符號(hào)數(shù)會(huì)有更高的效率。在實(shí)際調(diào)用中,盡量減少數(shù)據(jù)類型的強(qiáng)制轉(zhuǎn)換;少用浮點(diǎn)運(yùn)算,如果運(yùn)算的結(jié)果能夠控制在誤差之內(nèi),則可用長整型代替浮點(diǎn)型。

(四)switch語句和循環(huán)語句的優(yōu)化

編程時(shí),對(duì)case值按照可能性排序,將最可能發(fā)生的情況放在第一個(gè),最不可能的情況放在最后一個(gè),可以提高switch語句塊的執(zhí)行速度。

循環(huán)體是程序優(yōu)化的一個(gè)重要環(huán)節(jié),對(duì)于一些不需要循環(huán)變量參加運(yùn)算的模塊,可以把它放到循環(huán)的外面。對(duì)于次數(shù)固定的循環(huán)體,for循環(huán)比while循環(huán)效率更高,減計(jì)數(shù)循環(huán)比增計(jì)數(shù)循環(huán)速度快。

(五)查表代替計(jì)算

在程序中盡量不進(jìn)行非常復(fù)雜的運(yùn)算,如浮點(diǎn)數(shù)的開方。對(duì)于這些消耗時(shí)間和資源的運(yùn)算,可以采用空間換取時(shí)間的方法。預(yù)先將函數(shù)值計(jì)算出來,置于程序存儲(chǔ)區(qū)中,以后程序運(yùn)行時(shí)直接查表即可,減小了程序執(zhí)行過程中重復(fù)計(jì)算的工作量。

四、結(jié)論

嵌入式系統(tǒng)中的程序往往需要滿足實(shí)時(shí)性的要求,而且受到存儲(chǔ)空間的限制,因此對(duì)嵌入式系統(tǒng)中的程序需要進(jìn)行反復(fù)的優(yōu)化。進(jìn)行程序的優(yōu)化可以從設(shè)計(jì)和編碼兩個(gè)方面入手。在設(shè)計(jì)階段,采用面向?qū)ο蟮脑O(shè)計(jì)方法,對(duì)類型反復(fù)地進(jìn)行歸納,盡量提高繼承程度。和在編碼階段,要在數(shù)據(jù)定義、功能代碼的編寫等多個(gè)方面進(jìn)行優(yōu)化,提高代碼的執(zhí)行效率。

參考文獻(xiàn):

[1]王軍安,淺析嵌入式系統(tǒng)軟件優(yōu)化設(shè)計(jì)[J].計(jì)算機(jī)工程與應(yīng)用,2004.

[2]覃征,王志敏等,程序設(shè)計(jì)方法與優(yōu)化[M].西安交通大學(xué)出版社,2004.

[3]許汝峰譯,32位嵌入式系統(tǒng)編程[M].中國電力出版社,2002.

[4]張義青、李華貴,嵌入式程序設(shè)計(jì)中C/C++代碼的優(yōu)化[J].微計(jì)算機(jī)信息,2003.

[5]江開耀、張俊欄等,軟件工程[M].西安電子科技大學(xué)出版社,2004.

作者簡介:

王月青,河北清河人,邢臺(tái)職業(yè)技術(shù)學(xué)院信息工程系講師,工學(xué)碩士,從事信息技術(shù)的教學(xué)和研究。

猜你喜歡
面向?qū)ο?/a>嵌入式系統(tǒng)優(yōu)化
營商環(huán)境五方面持續(xù)優(yōu)化
優(yōu)化英語課堂教學(xué)策略的探索
促進(jìn)學(xué)生認(rèn)識(shí)發(fā)展 優(yōu)化初中化學(xué)復(fù)習(xí)
面向?qū)ο蟮挠?jì)算機(jī)導(dǎo)論課程教學(xué)
基于Web的科研項(xiàng)目管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
應(yīng)力波反射法測錨索長度的數(shù)據(jù)處理軟件設(shè)計(jì)與實(shí)現(xiàn)
基于物聯(lián)網(wǎng)項(xiàng)目驅(qū)動(dòng)的嵌入式系統(tǒng)教學(xué)改革的研究與實(shí)踐
嵌入式系統(tǒng)課程“中斷、異常與事件”教學(xué)實(shí)踐及啟示
面向?qū)嵺`創(chuàng)新人才培養(yǎng)的嵌入式系統(tǒng)教學(xué)研究
從面向過程到面向?qū)ο笏季S方式的教學(xué)引導(dǎo)
西丰县| 菏泽市| 夏邑县| 博爱县| 新巴尔虎右旗| 兰溪市| 乌兰县| 吉安县| 武山县| 梅河口市| 彭州市| 西丰县| 绥芬河市| 甘南县| 交口县| 绍兴市| 垦利县| 进贤县| 五寨县| 龙胜| 靖边县| 黄大仙区| 红原县| 商丘市| 阿巴嘎旗| 泾阳县| 都昌县| 邢台县| 芒康县| 佛山市| 平定县| 永福县| 铁岭市| 五指山市| 平顺县| 平阳县| 通山县| 南木林县| 且末县| 云南省| 合川市|