知识大全 Java程序性能优化(3)
Posted 变量
篇首语:春蚕到死丝方尽,人至期颐亦不休。一息尚存须努力,留作青年好范畴。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java程序性能优化(3)相关的知识,希望对你有一定的参考价值。
Java程序性能优化(3) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
十四 对于boolean值 避免不必要的等式判断
将一个boolean值与一个true比较是一个恒等操作(直接返回该boolean变量的值) 移走对于boolean的不必要操作至少会带来 个好处
)代码执行的更快 (生成的字节码少了 个字节)
)代码也会更加干净
例子
public class UEQ
boolean method (String string)
return string endsWith ( a ) == true; // Violation
更正
class UEQ_fixed
boolean method (String string)
return string endsWith ( a );
十五 对于常量字符串 用 String 代替 StringBuffer
常量字符串并不需要动态改变长度
例子
public class USC
String method ()
StringBuffer s = new StringBuffer ( Hello );
String t = s + World! ;
return t;
更正
把StringBuffer换成String 如果确定这个String不会再变的话 这将会减少运行开销提高性能
十六 用 StringTokenizer 代替 indexOf() 和 substring()
字符串的分析在很多应用中都是常见的 使用indexOf()和substring()来分析字符串容易导致StringIndexOutOfBoundsException 而使用StringTokenizer类来分析字符串则会容易一些 效率也会高一些
例子
public class UST
void parseString(String string)
int index = ;
while ((index = string indexOf( index)) != )
System out println (string substring(index string length()));
参考资料
Graig Larman Rhett Guthrie: Java Performance and Idiom Guide
Prentice Hall PTR ISBN: pp –
十七 使用条件操作符替代 if (cond) return; else return; 结构
条件操作符更加的简捷
例子
public class IF
public int method(boolean isDone)
if (isDone)
return ;
else
return ;
更正
public class IF
public int method(boolean isDone)
return (isDone ? : );
十八 使用条件操作符代替 if (cond) a = b; else a = c; 结构
例子
public class IFAS
void method(boolean isTrue)
if (isTrue)
_value = ;
else
_value = ;
private int _value = ;
更正
public class IFAS
void method(boolean isTrue)
_value = (isTrue ? : ); // pact expression
private int _value = ;
十九 不要在循环体中实例化变量
在循环体中实例化临时变量将会增加内存消耗
例子
import java util Vector;
public class LOOP
void method (Vector v)
for (int i= ;i < v size();i++)
Object o = new Object();
o = v elementAt(i);
更正
在循环体外定义变量 并反复使用
import java util Vector;
public class LOOP
void method (Vector v)
Object o;
for (int i= ;i<v size();i++)
o = v elementAt(i);
二十 确定 StringBuffer的容量
StringBuffer的构造器会创建一个默认大小(通常是 )的字符数组 在使用中 如果超出这个大小 就会重新分配内存 创建一个更大的数组 并将原先的数组复制过来 再丢弃旧的数组 在大多数情况下 你可以在创建StringBuffer的时候指定大小 这样就避免了在容量不够的时候自动增长 以提高性能
例子
public class RSBC
void method ()
StringBuffer buffer = new StringBuffer(); // violation
buffer append ( hello );
更正
为StringBuffer提供寝大小
public class RSBC
void method ()
StringBuffer buffer = new StringBuffer(MAX);
buffer append ( hello );
private final int MAX = ;
参考资料
Dov Bulka Java Performance and Scalability Volume : Server Side Programming
Techniques Addison Wesley ISBN: p –
二十一 尽可能的使用栈变量
如果一个变量需要经常访问 那么你就需要考虑这个变量的作用域了 static? local?还是实例变量?访问静态变量和实例变量将会比访问局部变量多耗费 个时钟周期
例子
public class USV
void getSum (int[] values)
for (int i= ; i < value length; i++)
_sum += value[i]; // violation
void getSum (int[] values)
for (int i= ; i < value length; i++)
_staticSum += value[i];
private int _sum;
private static int _staticSum;
更正
如果可能 请使用局部变量作为你经常访问的变量
你可以按下面的方法来修改getSum()方法
void getSum (int[] values)
int sum = _sum; // temporary local variable
for (int i= ; i < value length; i++)
sum += value[i];
_sum = sum;
参考资料
Peter Haggar: Practical Java Programming Language Guide
Addison Wesley pp –
二十二 不要总是使用取反操作符(!)
取反操作符(!)降低程序的可读性 所以不要总是使用
例子
public class DUN
boolean method (boolean a boolean b)
if (!a)
return !a;
else
return !b;
更正
如果可能不要使用取反操作符(!)
二十三 与一个接口 进行instanceof操作
基于接口的设计通常是件好事 因为它允许有不同的实现 而又保持灵活 只要可能 对一个对象进行instanceof操作 以判断它是否某一接口要比是否某一个类要快
例子
public class INSOF
private void method (Object o)
if (o instanceof InterfaceBase) // better
if (o instanceof ClassBase) // worse
class ClassBase
cha138/Article/program/Java/hx/201311/26303相关参考
Java程序性能优化-代理模式(3) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java程序性能优化-缓存(Cache)(3) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &
Java程序性能优化-单例模式(3) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java程序性能优化-装饰者模式(3) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  
Java程序性能优化-对象复用“池”(3)[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java程序性能优化-对象复用“池”(3)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java程序性能优化-观察者模式(3) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  
Java程序性能优化-看懂程序的性能 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java程序性能优化-性能概述 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 第章 J
知识大全 Java程序性能优化--让你的Java程序更快、更稳定
Java程序性能优化--让你的Java程序更快、更稳定 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧