代码优化
来源:互联网 发布:java求1到100的乘积 编辑:程序博客网 时间:2024/06/11 14:03
- 在程序执行过程中,加减法操作是计算机最喜欢的操作,其执行时间只占用1个时钟周期,是最快的操作,位运算和移位操作的执行速度和加减法接近。乘法的执行时间要长一些,大概在5个时钟至6个时钟周期内完成.除法的执行速度最慢,大约需要50个时钟周期才能完成一个除法操作,所以移位操作是一个很好的选择,数据左移一位相当于乘以2,右移一位相当于除以2,使用移位操作可以将整数的乘除转换为对整数的移位操作,从而提高速度。
- 常量折叠
例如:
int a=10;
a=a+2*17+6; 和 int a a=a+40;这两种形式,第一种需要进行2次加法和1次乘法,第二种只需做一次加法,速度肯定是提高了不小.
3.使用数学公式:
for(i=1;i<=n;i++) sum+=i; 和 sum=((1+n)*n)/2; 前者要执行n次,后者只需执行一个数学公式。
4.存储问题:
例如: 语句1: x=x+1; 语句2: x+=1;
语句1在执行过程中编译器会认为赋值符号”=”两边的操作数不是一个操作数,而是两个,尽管用户知道这两个变量实际上是一个,这时该语句的执行过程分为3部,分别是 寻找存储左边操作数x的内存单元的地址;寻找存储右边操作数x的内存单元地址;
计算x+1的数值并且存储在变量x中.
语句2:该语句在执行过程中编译器会认为赋值符号”=” 两边的操作数是同一个操作数,所以该语句的执行过程分为两步,分别是:寻找存储操作x的内存单元的地址;计算x+1的数值并且存储到x中。
5.分支优化:
把先要判断的条件放在第一位置,if….else 和 switch 语句的区别,if…else 需要比较多次才能实现跳转,而switch 则不要比较那么多次.
6.循环优化:
在循环中有些计算是多次不变的,这种计算称为一次性计算. 由于一次性计算在循环执行期间不改变计算的结果,这时在循环外计算该表达式和在循环内执行的效果是一样的。因此对于这种循环中的一次性计算应当将其放置到循环外.
如果有哪位大神有好的优化方法,请指教了 。
0 0
- 代码优化
- 代码优化
- 优化代码
- 代码优化
- 代码优化
- 代码优化
- 代码优化
- 代码优化
- 优化代码
- 代码优化
- 代码优化
- 优化代码
- 代码优化
- 优化代码
- 代码优化
- 代码优化
- 代码优化
- 代码优化
- android进程
- xml解析
- Sql根据子类ID查找父类ID
- Codeforces 509E. Breaking Good SPFA
- 关于bios中设置u盘启动
- 代码优化
- C语言 实现strstri不区分大小写查找字符串
- iOS利用Runtime自定义控制器POP手势动画
- 数据库 数据类型
- android后台服务service全解析(中)--IntentService与Notification前台通知
- 判断一个文件时CPP还是C
- ajax跨域调用问题处理
- 修改eclipse配置的tomcat默认发布路径
- Python程序执行原理2