常见的性能瓶颈:
1.文件的读写和网络的操作
2.CPU
3.内存
4.同步
5.异常
6.屏幕绘制
一、程序设计和编码
1.对象的生成和大小的调整
(1)尽可能的使用静态变量
如果类中的变量不会随他的实例变化而变化,就定义为静态的,从而使它所有的实例都共享这个变量
(2)不要对已生成的变量做过多的改变
如尽可能不要过多改变String对象的值
(3)生成静态对象时,要分配给它合理的空间
一些数据结构的初始化大小要合理
(4)避免生成不常使用或生命周期短的对象或变量
应该定义一个对象缓冲池,这样开销小得多
(5)只在对象作用范围内进行初始化
局部使用的变量尽量拿到局部范围来定义和初始化
2.异常
尽量避免使用try/catch,能使用if,while代替就代替;
尽可能的重用已经存在的异常对象。因为生成一个异常对象要消耗大部分的时间
3.输入和输出
使用输入输出缓冲,尽可能的多使用缓存
OutStream比Writer类开销小,因为它要实现UTF8到byte的转换
4.一些经验技巧
使用局部变量
图形重绘只绘制变化的地方(如“脏矩形技术”)
避免get/set方法来访问变量
避免在同一个循环中生成同一个变量或调用同一个函数
尽可能的使用static,final,private等关键字
二、优化内存的使用
1.代码优化
//a不为空
a = new A();
这样可能就会产生溢出,因为对象仍存在
a = null;
a = new A();
对于经常使用的对象,如声音处理类,最好是用工厂方法来产生唯一对象
2.图片优化
颜色位数能低则低
多张规格一样的图片合并成一张
大尺寸图片,可以分块载入,如地图
3.基本类型byte,int,long,float,double什么的,能省一点是点
能不使用浮点数就不使用,因为大多数嵌入式处理器没有浮点运算的协处理器
三、减少应用程序体积
减少类
限制使用接口
使用无名包
使用源代码预处理器进行优化
使用混淆器
使用系统库,能不自己实现的就不自己实现
还有,不要过分的使用面向对象的设计方法,在J2ME里,效率是第一位的
1.文件的读写和网络的操作
2.CPU
3.内存
4.同步
5.异常
6.屏幕绘制
一、程序设计和编码
1.对象的生成和大小的调整
(1)尽可能的使用静态变量
如果类中的变量不会随他的实例变化而变化,就定义为静态的,从而使它所有的实例都共享这个变量
(2)不要对已生成的变量做过多的改变
如尽可能不要过多改变String对象的值
(3)生成静态对象时,要分配给它合理的空间
一些数据结构的初始化大小要合理
(4)避免生成不常使用或生命周期短的对象或变量
应该定义一个对象缓冲池,这样开销小得多
(5)只在对象作用范围内进行初始化
局部使用的变量尽量拿到局部范围来定义和初始化
2.异常
尽量避免使用try/catch,能使用if,while代替就代替;
尽可能的重用已经存在的异常对象。因为生成一个异常对象要消耗大部分的时间
3.输入和输出
使用输入输出缓冲,尽可能的多使用缓存
OutStream比Writer类开销小,因为它要实现UTF8到byte的转换
4.一些经验技巧
使用局部变量
图形重绘只绘制变化的地方(如“脏矩形技术”)
避免get/set方法来访问变量
避免在同一个循环中生成同一个变量或调用同一个函数
尽可能的使用static,final,private等关键字
二、优化内存的使用
1.代码优化
//a不为空
a = new A();
这样可能就会产生溢出,因为对象仍存在
a = null;
a = new A();
对于经常使用的对象,如声音处理类,最好是用工厂方法来产生唯一对象
2.图片优化
颜色位数能低则低
多张规格一样的图片合并成一张
大尺寸图片,可以分块载入,如地图
3.基本类型byte,int,long,float,double什么的,能省一点是点
能不使用浮点数就不使用,因为大多数嵌入式处理器没有浮点运算的协处理器
三、减少应用程序体积
减少类
限制使用接口
使用无名包
使用源代码预处理器进行优化
使用混淆器
使用系统库,能不自己实现的就不自己实现
还有,不要过分的使用面向对象的设计方法,在J2ME里,效率是第一位的