Blogger Information
Blog 27
fans 0
comment 1
visits 46177
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
谈谈代码性能优化中的一些小细节
学习使我快乐
Original
812 people have browsed it

循环优化

明确一个概念,对方法的调用,即使方法中只有一句语句,也是有消耗的,包括创建栈帧、调用方法时保护现场、调用方法完毕时恢复现场等。所以例如下面的操作:

for (int i = 0; i < list.size(); i++)

{

...

}

建议替换为:

for (int i = 0, int length = list.size(); i < length; i++)

{

...

}

除此之外,如果在循环结构中,存在循环元素无关的逻辑判断条件的计算,比如 if(A > B && B > C)建议改为if(conditionD)。

2. 将循环变量无关的计算都放到循环外,这一条不解释。

3. 不要在循环中使用try…catch…,应该把其放在最外层。主要原因在于,如果循环中出现exception, try..catch在外层就直接跳出了循环,否则执行中抛出异常就会继续循环。

4.循环内不要不断创建对象引用

例如:

for (int i = 1; i <= count; i++)

{

Object obj = new Object();

}

这种做法会导致内存中有count份Object对象引用存在,count很大的话,就耗费内存了,建议为改为:

Object obj = null;

for (int i = 0; i <= count; i++)

{

obj = new Object();

}

逻辑判断优化


1. 尽量采用“懒加载”的策略,即在需要的时候才创建

例如:

String str = "forest";

if (i == 1)

{

list.add(str);

}

建议替换为:

if (i == 1)

{

String str = "forest";

list.add(str);

}

2. switch 语句按照出现频率排序,让最常用的放在最前面,减少无效判断。

3. if 语句将弱计算的条件放在前面,避免过多的计算。

4. 字符串变量和字符串常量equals的时候将字符串常量写在前面,这是一个比较常见的小技巧了。 例如:

String str = "forest";

if (str.equals("forest"))

{

...

}

建议修改为:

String str = "forest";

if ("forest".equals(str))

{

...

}

表达式优化

降低计算强度,乘法和除法使用移位操作, 使用移位代替整数2的倍数的乘除,

使用位运算代替取余运算。

例如:

for (val = 0; val < 100000; val += 5)

{

a = val * 8;

b = val / 2;

}

用移位操作可以极大地提高性能,因为在计算机底层,对位的操作是最方便、最快的,因此建议修改为:

for (val = 0; val < 100000; val += 5)
{

a = val << 3;

b = val >> 1;

}

2. 布尔逻辑优化,这一条也是平时大家不太注意的细节,例如,!a && !b 转换为!(a || b) ,会减少程序很大的计算量。


一点小结

代码中可以优化的点,其实还有很多了,举这几个例子的目的,就是想说明一点,多思考,多留心每一条语句执行背后的细节,就可以有很大的收获和提高。

免责声明:本文来源于,由网友提供或网络搜集,仅供个人研究、交流学习使用,不涉及商业盈利目的。如有版权问题,请联系本站管理员予以更改或删除。优知网会定期发布程序开发相关趋势文章,包括 PHP、 Linux、 Mysql 等领域,敬请关注!最后大家可以扫描下方的赞赏码支持我,感谢大家!

微信赞赏小.png

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post