• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      嵌入式系統(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ì)語(yǔ)言。面向?qū)ο蟪绦蛟O(shè)計(jì)的出現(xiàn)是計(jì)算機(jī)編程技術(shù)的重大進(jìn)步。它以對(duì)象為中心觀察、描述和處理問(wèn)題,按照對(duì)象及對(duì)象之間的聯(lián)系來(lái)構(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ǔ),通過(guò)類繼承可以最大限度地實(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)行歸納。如果在一組相似的類中存在公共的屬性和公共的行為,則可以把這些公共的屬性和行為抽取出來(lái)重新定義一個(gè)類作為基類。

      三、代碼優(yōu)化

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

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

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

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

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

      (三)代碼替換

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

      1.減少除法運(yùn)算。用關(guān)系運(yùn)算符兩邊乘除數(shù)避免除法操作,還有一些除法和取模的運(yùn)算可以用位操作來(lái)代替。因?yàn)槲徊僮髦噶钪恍枰粋€(gè)指令周期,而“/”運(yùn)算則需要調(diào)用子程序,代碼長(zhǎng),執(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ì)除法來(lái)說(shuō),使用無(wú)符號(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),則可用長(zhǎng)整型代替浮點(diǎn)型。

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

      編程時(shí),對(duì)case值按照可能性排序,將最可能發(fā)生的情況放在第一個(gè),最不可能的情況放在最后一個(gè),可以提高switch語(yǔ)句塊的執(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ù)的開(kāi)方。對(duì)于這些消耗時(shí)間和資源的運(yùn)算,可以采用空間換取時(shí)間的方法。預(yù)先將函數(shù)值計(jì)算出來(lái),置于程序存儲(chǔ)區(qū)中,以后程序運(yùn)行時(shí)直接查表即可,減小了程序執(zhí)行過(guò)程中重復(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ù)定義、功能代碼的編寫(xiě)等多個(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].中國(guó)電力出版社,2002.

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

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

      作者簡(jiǎn)介:

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

      猜你喜歡
      面向?qū)ο?/a>嵌入式系統(tǒng)優(yōu)化
      營(yíng)商環(huán)境五方面持續(xù)優(yōu)化
      優(yōu)化英語(yǔ)課堂教學(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)力波反射法測(cè)錨索長(zhǎ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é)研究
      從面向過(guò)程到面向?qū)ο笏季S方式的教學(xué)引導(dǎo)
      昆山市| 梅河口市| 平昌县| 称多县| 平泉县| 鸡泽县| 周至县| 射洪县| 彭山县| 博爱县| 周至县| 年辖:市辖区| 象州县| 香港| 望奎县| 会理县| 清水河县| 尉氏县| 上虞市| 兴安县| 全州县| 定远县| 穆棱市| 社旗县| 东明县| 唐河县| 康定县| 武清区| 富川| 额尔古纳市| 松滋市| 阳山县| 夏河县| 丹江口市| 改则县| 都江堰市| 武邑县| 卢湾区| 城步| 玉溪市| 醴陵市|