时间换空间
由于系统资源是有限的为了在有限的资源内达成某些特定的性能目标就需要使用时间换空间或者空间换时间的方法
时间换空间通常用于嵌入式设备或者内存硬盘空间不足的情况通过使用牺牲CPU的方式获得原本需要更多内存或者硬盘空间才能完成的工作
下例是一个非常简单的时间换空间的算法实现了ab两个变量的值交换交换两个变量最常用的方法是使用一个中间变量而引入额外的变量意味着要使用更多的空间采用下面的方法则可以免去中间变量而达到变量交换的目的其代价则是引入了更多的CPU运算
aa=a+b;
b=ab;
aa=ab;
另一个较为有用的例子是对无符号整数的支持在Java语言中不支持无符号整数这意味着当需要无符号的byte时需要使用short代替这也意味着空间的浪费下例使用位运算模拟无符号byte虽然在取值和设值过程中需要更多的CPU运算但是却可以大大降低对内存空间的需求
public class UnsignedByte {
public short getValue(byte i) { //将byte转为无符号的数字
short li = (short) (i & xff)
return li;
}
public byte toUnsignedByte(short i) { //将short转为无符号byte
return (byte) (i & xff)
}
public static void main(String args[]) {
UnsignedByte ins = new UnsignedByte()
short[] shorts=new short[]; //声明一个short数组
for(int i=;i<shortslength;i++) //数值不能超过无符号byte的上限
shorts[i]=(short)i;
byte[] bytes=new byte[]; //使用byte数组替代short数组
for(int i=;i<byteslength;i++)
bytes[i]=instoUnsignedByte(shorts[i])
//short数组的数据存到byte数组中
for(int i=;i<byteslength;i++)
Systemoutprint(insgetValue(bytes[i])+ )
//从byte数组中取出无符号的byte
}
}
注意性能优化的关键在于掌握各部分组件的性能平衡点如果系统CPU资源有空闲但是内存使用紧张便可以考虑使用时间换空间的策略达到整体性能的改良反之CPU资源紧张内存资源有空闲则可以使用空间换时间的策略提升整体性能
返回目录Java程序性能优化让你的Java程序更快更稳定
编辑推荐
Java程序设计培训视频教程
JEE高级框架实战培训视频教程
JME移动开发实战教学视频
Visual C++音频/视频技术开发与实战
Oracle索引技术
ORACLEG数据库开发优化指南