看过《 编写高效的Android代码》见 这篇文章,觉得挺有道理的,于是按照其说法从以下几个角度修改了自己的app代码。
1,避免建立对象。 这一点是没有问题的,java编程时都需要尽量控制new 对象的次数,每次在heap中生成新的对象是很费时的。
2,不涉及成员变量和成员方法的方法都定义为static。这一点也没有问题,姑且不论效率问题,这也是OO思想的一个体现。
3,成员变量缓存到本地。 理论上讲,成员变量的访问,是存储在heap中的,heap的访问没有stack中访问高效。而且经过java测试,我发现,对比两次使用成员变量 和 一次申请局部变量缓存后再两次使用局部变量,后者要效率高。代码如下:
public class test { public long a ; public long b ; test(long x , long y){ a = x; b = y; } void reset(long x , long y){ a = x ; b = y ; } public static void main(String args[]){ test mt = new test(-1,-1); System.out.print("成员变量访问 与 局部变量 访问对比 1:\n"); long time = System.currentTimeMillis(); for (long i = 0 ; i != 1000000 ; i ++){ //下面是两次对成员变量的使用 if ( mt.a == i ){ i ++ ; } if ( mt.a == i ){ i ++ ; } } System.out.print("成员变量 : "+(System.currentTimeMillis() - time) + "ms\n"); time = System.currentTimeMillis(); for (long i = 0 ; i != 1000000 ; i ++){ //下面先缓存为局部变量,再两次使用局部变量 long x = mt.a ; if ( x == i ){ i ++ ; } if ( x == i ){ i ++ ; } } System.out.print("局部变量: "+(System.currentTimeMillis() - time) + "ms\n\n"); } }用于测试的app为一个surfaceview为主体的重力感应游戏。