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