程序设计优化.ppt
《程序设计优化.ppt》由会员分享,可在线阅读,更多相关《程序设计优化.ppt(29页珍藏版)》请在课桌文档上搜索。
1、2023/3/30,程序设计优化,程序设计优化,程序设计优化,ARM C程序设计优化,编译器的特性数据类型对程序效率的影响循环方式对程序效率的影响指针对程序效率的影响边界对齐对程序的影响,程序设计优化,一、编译器的特性,void setzero(char*p,int n)for(;n0;n-)*p=0;p+;,清除从字符型指针p开始的n个字节空间,程序设计优化,编译器的特性(续),void setzero(char*p,int n)for(;n0;n-)*p=0;p+;,问题:编译器不知道n是否为0。编译器不知道p是否4字节对齐。编译器不知道n是否为4的倍数。,程序设计优化,结论:,编译器是保
2、守的:必须假定n的所有可能值。必须假定p所有可能的边界值。,程序设计优化,编写高效C代码的要求,了解哪些方面编译器是保守的了解编译器对应的处理器体系结构,程序设计优化,二、数据类型对程序效率的影响,unsigned char i;for(i=0;i100;i+),i声明为unsigned char的优点?无符号字符变量表示的范围超过了100,可以完成题目要求。char更节省寄存器和内存空间。,程序设计优化,函数参数类型,总体思想:尽量采用int、long类型。,程序设计优化,有符号数和无符号数,如果程序中只有加、减、乘法,那么有符号数和无符号数的执行效率没有区别。如果有除法,那么需要额外的步骤
3、。,程序设计优化,有符号数和无符号数(续),有符号除法,在ARM C中,如果x是负数,那么除2操作不是一个右移操作。例如-3/2=-1。但是在ARM机器中:,-3,-2,-1,直接右移,加1右移,程序设计优化,结论:,使用无符号数除法效率更高。,程序设计优化,对于存放在寄存器中的变量,尽量采用整型。尽可能使用无符号数进行运算。函数参数和返回值尽量采用整型数据。,总结,程序设计优化,三、循环方式对程序效率的影响,循环是代码优化的重点C程序主要使用for和while进行循环,程序设计优化,固定次数的循环,什么是ARM上编写for循环最高效的方法?,程序设计优化,固定次数的循环(续),int i;f
4、or(i=0;i100;i+),int i;for(i=100;i0;i-),上面代码要实现转移需要两条指令,首先把某寄存器的内容和100比较,其次条件符合时转移。相同功能的代码如果写作下面形式,则可用“BNE”一条指令实现比较以及转移两个功能。,程序设计优化,至少一次循环,对于“for(;n0;n-)”,如果能确保第一次循环之前n恒大于0,此时取消第一次n大于0的判断,是不会影响程序的逻辑,而且显然程序执行效率可以提高,用dowhile循环可以达到这一目的,程序设计优化,循环展开,循环开销重复100次,假设每次循环开销占用4个时钟周期,循环体中的加法占用1个时钟周期,那么有效程序仅占CPU执
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 优化
![提示](https://www.desk33.com/images/bang_tan.gif)
链接地址:https://www.desk33.com/p-259535.html