【精品博文】jihceng0622:浅谈Codewarrior局部优化技巧

  程序优化在很多工程应用中都会用得到,但是归根结底优化的目的是什么呢?在我看来,觉着无非是硬件平台资源限制的问题,其中硬件平台资源限制我指的是两个,即处理速度(Speed)和存储空间大小(Size)的限制。举个很形象的例子,如果要在ARM平台上跑51的代码,我根本不会去考虑代码优化的问题,因为要ARM去实现51的功能代码,资源是冗余的,没有必要花费精力去做优化,但是如果涉及到一些复杂的应用也肯定会遇到这样的问题(要么处理速度不够,要么存储空间不够)。

  再举个常被拿来对比软件优化重要性的例子,目前手机操作系统两大阵营的Android和iOS,搭载Android的厂商每年都在拼硬件,从单核512M RAM到如今8核2G/3G RAM,App也是越做越绚丽越庞大,导致Android的手机更新换代的频率越来越快(感觉消费者完全是被迫去换手机),而反观iOS平台,由于其软件优化做的好,目前最强的iPhone5s也不过是双核1G RAM,而且昨天还看到一则新闻苹果至今还在给早期的iPhone 3GS维护和更新iOS6。咳咳,有点跑题了,话题扯远了,今天主要是想说说局部优化的问题,开发环境就以FSL自己的Codewarrior为例吧,因为这也是我在帮一个客户解决问题的时候想到一种方法。

  前面说到代码优化的目的,一个满足Speed的要求,一个是满足Size的需求,我这里重点说下Size的问题。我们在选定好一个硬件平台之后,其主频、RAM和Flash空间也就固定下来了,但是如果由于前期需求分析不足或者以后功能升级造成代码量已经超出既有的硬件平台存储空间的话,这样就会有两种选择方案,一种是代码量超出既有存储空间很多那就只能考虑替换存储空间更大的芯片(得综合考虑成本的问题),另一种是代码量超出不多,这时就可以考虑对软件进行恰当的优化来化解这个问题。现在一般的IDE开发环境的编译器都是支持对代码进行不同等级的优化(有的编译器也可以设置优先考虑Speed还是Size的需求),当然这种设置是全局的,它会对整个工程的代码进行优化,但是有一个很严肃的问题需要考虑,一般来说软件的优化一定程度上来说也会造成功能上的不稳定或者引入不可预知的隐患bug,甚至可能会造成功能上的逻辑错误导致程序不能正常运行,而且优化等级越高这个风险就越大,需要有足够经验的高手才能游刃有余,所以一般来说代码空间足够的话是不建议优化的。这里我给大家分享的一种折衷的办法,局部优化,即实现单独对代码中某个函数或者某个C文件进行优化,这样就可以保证对优化带来的风险进行有效的控制。

  FSL的开发环境Codewarrior针对ARM平台提供了可选的两种编译器供开发者选择,一种是freescale自己的编译器,一个是耳熟能详的GCC,要实现在这两种编译器中对代码进行局部定制化的优化需要使用预编译指令#pragma,如下(左侧围Freescale自己的编译器指令,右侧围GCC编译器指令):

  具体的使用方法,以GCC为例,如下:

  #pragma GCC push_options

  #pragma GCC optimize ("O0") //可选O0(不优化), O1, O2, O3, O4

  //insert your code here

  #pragma GCC pop_options

  其实前面说了那么多,实际上就是为上面四行代码做铺垫,呵呵,所以说写篇分享真是有点累的慌,希望对大家有所帮助,不然亏的慌,哈哈。

◆ ◆ ◆ ◆ ◆◆ ◆ ◆ ◆ ◆◆ ◆ ◆ ◆ ◆◆ ◆ ◆ ◆ ◆

(0)

相关推荐

  • c4droid汉化版下载 c4droid(C 编译器) for Android V7.0 汉化版 ...

    c4droid 7.0 汉化版是一款非常棒的编程学习软件.软件可以让你轻松的进行多种方式的编程.趣味的处理方式,无需root,简单的操作,是你学习编程的好工具!需要的朋友可以前来本站下载. 软件介绍 ...

  • C语言编译器之二,Clang

    二.Clang编译器 Clang编译器是由APPLE公司的编译器大牛Chris Lattner主导下编写的,其目标是替换大名鼎鼎的GCC编译器: 2.1.Clang和GCC编译器架构 从源代码到可执行 ...

  • 浅谈书法章法技巧

    书法之美,美于点画,美于结构,美于章法.其中章法是书法篇章布局之法,是艺术美的核心,也是书法家追求艺术的最高境界.书法章法的技巧有哪些呢?介绍如下,仅供大家参考. 章法是把一个个字组成篇章的方法,是组 ...

  • 浅谈书法接笔技巧

    接笔,书法运笔之法.接笔技巧运用的好坏,会影响书法作品的质量,所以,我们要学会连接.善于接笔,使之融洽.完美,出于天成. 实接技法 接笔是笔画相接处的写法.书法是线条的艺术,笔画是靠线条连接的.在连接 ...

  • 哪种车险必须买? 浅谈汽车保险购买技巧

    保险是每个车主买车后必须消费的项目,但是面对纷繁复杂的车险项目,很多车主都不知从何下手.全部购买觉得不划算,不购买心里又不那么放心.因此,了解车险的作用以及购买需求就非常有必要了,这样就可以做到既省钱 ...

  • 浅谈语文课导入技巧

    浅谈语文课导入技巧 教师要提高就学质量 必须想方设法使学生产生学习兴趣 ,要使学生产生高昂的学习兴趣 ,激起学生的求知欲望 课前导入起着十分重要的作用 .我在多年的语文 数学教学中很重视课题的导入艺术 ...

  • 【精品博文】12V转5V电源设计方案(LM2596浅谈)

    最近做电设需要用到12V转5V的电源模块,之前用一个7805输入12直接变成5V简单粗暴,如下图所示 但是真的感觉太LOW了,而且发热太严重了,不加散热片的话简直感觉要爆炸了.虽然并联了两个7805后 ...

  • 招标师:招投标程序与技巧浅谈

    招标与投标,是有组织.有程序.规范化的市场交易行为,是商品.技术和劳务的买卖方法. 招标,是众多采购方式中最重要的一种.招标是业主选择最合理供货商.承建商或劳务提供者的一种手段,是实施资源最合理配置的 ...

  • 浅谈明代斗彩天字罐的鉴定技巧和方法

    众所周知,明代斗彩天字罐在古代瓷器中的地位举足轻重,如果说元青花是瓷中霸主,那么明代斗彩天字罐就是瓷中帝皇.现存的十几件明代斗彩天字罐中的绝大多数都在博物馆里,在民间的明代斗彩天字罐可谓是寥若星辰.即 ...

  • 浅谈:宋代钧窑瓷器鉴定方法,专家从专业的知识角度鉴别真假作伪技巧

    中国汉族传统制瓷工艺的珍品,为宋元时期北方瓷窑,为宋五大名窑之一.钧窑在河南省禹县(今禹州市 ).禹州古为夏禹国,禹受封于此为夏伯,境内有钧台,禹之子启大享诸侯于此,正式继位,钧名由此而来.因以钧瓷钧 ...

  • 查账的基本方法和技巧浅谈,适用于纪委监委、巡察等一线人员!!

    纪检监察案件查账主要针对涉嫌违纪违法的检查对象和党员领导干部,查账的目的是查清违纪违法事实.巡察主要通过查阅账目发现疑点并通过巡察"12 N"种方式予以验证,由此发现问题线索.通过 ...