嵌入式系统中程序的优化策略

来源 :硅谷 | 被引量 : 0次 | 上传用户:xuxinhuiaishu
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘要]嵌入式系统中的程序往往是运行在有限的硬件资源环境中,而且大多具有实时性的要求,因此要对程序进行优化,尽量提高程序的执行效率,减少程序的存储空间。讨论对嵌入式系统中的程序进行优化的方法和策略。
  [关键词]嵌入式系统 优化 程序代码 面向对象
  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0220063-01
  
  一、引言
  
  嵌入式系统是一个专用计算机系统,完全封装在其所控制的设备内。与通用计算机不同,嵌入式系统执行非常明确的预定义任务。而且,嵌入式系统的外形尺寸、功耗、外部适配器等各种特征必须满足应用的要求和限制;另外,一些嵌入式系统还具有实时性的要求。为了满足嵌入式系统的实时性和有限存储空间的要求,嵌入式程序要尽量提高运行速度,减少存储空间。因此,在嵌入式系统设计中要进行程序的优化以提高系统的性能,缩减产品的尺寸和成本。
  对嵌入式程序进行优化主要从两个方面入手:1.设计优化;2.代码优化。
  
  二、设计优化
  
  (一)面向对象程序设计技术
  现代的程序设计普遍采用面向对象的设计方法。面向对象程序设计于20世纪60年代提出,以后逐渐发展和完善,出现了java、C++等面向对象的程序设计语言。面向对象程序设计的出现是计算机编程技术的重大进步。它以对象为中心观察、描述和处理问题,按照对象及对象之间的联系来构造软件实体。
  面向对象是一种自下而上的程序设计方法,它以数据为中心,类作为表现数据的工具,是划分程序的基本单位。面向对象程序设计的基本方法就是把数据和对数据的处理函数封装在一起,形成一个相对独立的类模块,类实现了数据与函数功能的有机结合。
  (二)面向对象设计的优化
  类是面型对象程序设计的基础,通过类继承可以最大限度地实现功能代码的重用,减少程序的存储空间。
  调整继承关系是优化设计的一个重要方面,继承关系能够为一个类族定义一个协议,并能在类之间实现代码共享以减少冗余。在面向对象设计中,建立良好的继承关系对优化结构是非常重要的。
  在设计类继承时,使用自顶向下和自底向上相结合的方法。先创建一些功能类型,然后进行归纳。如果在一组相似的类中存在公共的属性和公共的行为,则可以把这些公共的属性和行为抽取出来重新定义一个类作为基类。
  
  三、代码优化
  
  代码优化,就是采用更精简的程序代码来代替原有的代码,使编译后的程序运行效率更高。以下是一些常用的优化技术和技巧。
  (一)尽量定义轻量级的构造方法
  在进行类的设计时,要尽量设计轻量级的构造方法。在程序运行过程中,除了创建显示定义的对象外,还要创建很多临时的对象,在创建类型的每个对象时都要调用类型的构造方法。如果构造方法过于复杂,就会降低程序运行的效率。
  (二)尽量定义局部变量,减少类成员变量的个数
  少用全局变量,多用局部变量。全局变量是放在数据存储器中的,太多的全局变量,会导致编译器无足够的内存分配;而局部变量则大多定位于内部的寄存器中。使用寄存器的操作速度比数据存储器快,指令也更灵活,有利于生成质量更高的代码。
  (三)代码替换
  使用周期短的指令代替周期长的指令,以降低运算的强度。
  1.减少除法运算。用关系运算符两边乘除数避免除法操作,还有一些除法和取模的运算可以用位操作来代替。因为位操作指令只需一个指令周期,而“/”运算则需要调用子程序,代码长,执行慢。例如:
  优化前if((a/b)>c)和a=a/4
  优化后if(a>(b*c))和a=a>>2
  2.减少乘方运算。例如:
  优化前a=pow(a,3.0)
  优化后a=a*a*a
  3.使用自加、自减指令。例如:
  优化前a=a+1、a=a-l
  优化后a++、a--
  对除法来说,使用无符号数比有符号数会有更高的效率。在实际调用中,尽量减少数据类型的强制转换;少用浮点运算,如果运算的结果能够控制在误差之内,则可用长整型代替浮点型。
  (四)switch语句和循环语句的优化
  编程时,对case值按照可能性排序,将最可能发生的情况放在第一个,最不可能的情况放在最后一个,可以提高switch语句块的执行速度。
  循环体是程序优化的一个重要环节,对于一些不需要循环变量参加运算的模块,可以把它放到循环的外面。对于次数固定的循环体,for循环比while循环效率更高,减计数循环比增计数循环速度快。
  (五)查表代替计算
  在程序中尽量不进行非常复杂的运算,如浮点数的开方。对于这些消耗时间和资源的运算,可以采用空间换取时间的方法。预先将函数值计算出来,置于程序存储区中,以后程序运行时直接查表即可,减小了程序执行过程中重复计算的工作量。
  
  四、结论
  
  嵌入式系统中的程序往往需要满足实时性的要求,而且受到存储空间的限制,因此对嵌入式系统中的程序需要进行反复的优化。进行程序的优化可以从设计和编码两个方面入手。在设计阶段,采用面向对象的设计方法,对类型反复地进行归纳,尽量提高继承程度。和在编码阶段,要在数据定义、功能代码的编写等多个方面进行优化,提高代码的执行效率。
  
  参考文献:
  [1]王军安,浅析嵌入式系统软件优化设计[J].计算机工程与应用,2004.
  [2]覃征,王志敏等,程序设计方法与优化[M].西安交通大学出版社,2004.
  [3]许汝峰译,32位嵌入式系统编程[M].中国电力出版社,2002.
  [4]张义青、李华贵,嵌入式程序设计中C/C++代码的优化[J].微计算机信息,2003.
  [5]江开耀、张俊栏等,软件工程[M].西安电子科技大学出版社,2004.
  
  作者简介:
  王月青,河北清河人,邢台职业技术学院信息工程系讲师,工学硕士,从事信息技术的教学和研究。
其他文献
[摘要]在经费有限,不能全部采用冗余设置和线路的情况下,利用升级前原有网络设备和MSTP多业务传送平台建立双机热备(HSRP)的冗余备份机制,消除网络单点故障,建立一个安全、可靠、高效的网络系统,提升线路可靠性,缓解网络维护压力。  [关键词]计算机网络 备用线路 HSRP MSTP  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0220034-01    本文主要介绍
[摘要]第三代移动通信系统目标主要是全球化、综合化和个人化,欧洲和日本共同提出的WCDMA-FDD/TDD、以美国高通为代表提出的CDMA 2000和以中国大唐为代表提出的TD-SCDMA。  [关键词]第三代移动通 3G WCDMA CDMA 2000 TD-SCDMA  中图分类号:TN91文献标识码:A文章编号:1671-7597(2009)0220036-01    现在“3G通信”快要成
提高自考成绩的技术性问题郭跃显任志忠高等教育自学考试是对考生进行全方位多层面的综合检测的考试形式,它不仅对考生的知识与智力(包括基础知识的理解与掌握能力、知识迁移能
Dupont公司和农业综合企业巨头Archer Daniels Midland公司(ADM)推出了一种生产呋喃二甲酯(FDME)的生物基工艺。FDME是制备“结构单元”化学品呋喃二甲酸(FDCA)的前体。据Dupont公
该文从挂篮荷载计算、施工流程、支座及临时固结施工、挂篮安装及试验、合拢段施工、模板制作安装、钢筋安装、混凝土的浇筑及养生、测量监控等方面人手,介绍了S226海滨大桥
[摘要]网络安全管理是网络管理的重中之重,特别是学校校园网的安全直接关系到教育教学活动的正常进行,必须引起人们的高度重视。对安全问题的来源进行分析,有针对性地预防,可以提高校园网的安全水平。  [关键词]网络安全 病毒 防火墙 入侵检测  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0220045-01    校园网作为数字化信息的最重要的传输载体,在学校建设和管理中发
《中华人民共和国职业教育法》已经贯彻实施一周年了,《北京市实施(中华人民共和国职业教育法)办法》也已经市人大常委会审议通过并于10月1日实施,这是北京市职业教育事业的一件大事
素质教育的改革形势下,教学中越来越注重对学生实践操作能力与合作能力的培养.在这样的形势下,对于初中数学实践课堂教学的构建,其主要任务是突出课堂上学生的参与性、注重学
该文从挂篮荷载计算、施工流程、支座及临时固结施工、挂篮安装及试验、合拢段施工、模板制作安装、钢筋安装、混凝土的浇筑及养生、测量监控等方面人手,介绍了S226海滨大桥
提到FTP服务器,可能大家都会想到Serv-U、vs—FTP等软件,确实,Serv—U是一种被广泛运用的FTP服务器端软件,支持全Windows系列。可以设定多个FTP服务器、限定登录用户的权限、