android 通用编码实践技巧

There are two basic rules for writing efficient code:

  • Don't do work that you don't need to do.不要做你不需要做的。
  • Don't allocate memory if you can avoid it.能不分配内存,尽量不要分配内存。
1.避免创建没用的对象
避免太多的创建短期临时对象,更少的对象创建意味着更少的垃圾收集,这对用户体验有直接的影响。

2.如果你不需要访问一个对象的字段,使您的静态方法。调用将快15% - -20%。也很好的做法,因为你可以告诉的方法签名,调用方法不改变对象的状态。

3.静态常量使用 static final(注意::这种优化仅适用于原始类型和字符串常量
static final int intVal = 42;
static final String strVal = "Hello, world!";

4.避免内部的getter / setter,在一个class中的字段尽量直接访问,而不是调用getterXXX()之类的方法,
Without a  JIT:直接调用字段,会比调用 getter方法快3倍左右。
With the JIT:直接调用字段,会比调用getter方法快7倍左右。
知识点:JIT(where direct field access is as cheap as accessing a local)

5.使用更加高效的循环算法
static class Foo {
    int mSplat;
}

Foo[] mArray = ...

public void zero() {
    int sum = 0;
    for (int i = 0; i < mArray.length; ++i) {
        sum += mArray[i].mSplat;
    }
}

public void one() {
    int sum = 0;
    Foo[] localArray = mArray;
    int len = localArray.length;

    for (int i = 0; i < len; ++i) {
        sum += localArray[i].mSplat;
    }
}

public void two() {
    int sum = 0;
    for (Foo a : mArray) {
        sum += a.mSplat;
    }
}
zero()  是最慢的,因为每次循环都调用了localArray.length;去判断字符串的长度
one()把计算长度单独剥离了出去
two(),它使用增强的for循环语法在版本1.5中引入

6.避免内部类调用外部类的私有方法

7.避免使用浮点型
在android设备上,浮点数大约比整数满2倍的性能。

8.了解并且多使用系统自带库的方法,在一般情况下效率比自己写得更高

9,小心使用 Native Methods(JNI) 
一个是底层分配的内存不容易管理,而且Java与另外一种语言之间的调用会有额外的开销,还有一点是处理器架构不同可能需要编译多个版本的库文件




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值