安卓学习日记——高性能编码技巧

  • 1、避免创建不必要的对象
    1、如果我们有一个需要拼接的字符串,那么可以优先考虑使用StringBuffer或者StringBuild来进行拼接。
    2、尽量使用基本数据类来代替封装数据类型,int比Integer要更加高效,其他数据类型也是一样。
    3、如果我们明确地知道调用方会将这个返回的String再进行拼接操作的话,可以考虑返回一个StringBuffer对象来代替。
    4、基本数据类型要优于对象数据类型,类似地,基本数据类型的数组也要优于对象数据类型的数组。两个平行的数组要比一个封装好的对象数组更加高效,举个例子,Foo[]和Bar[]这样的两个数组,使用起来要比Custom(Foo,Bar)这样的一个数组高效得多。
    我们所要遵守的一个基本原则就是尽可能地少创建临时对象,越少的对象意味着越少的GC操作,同时也就意味着越好的程序性能和用户体验。

  • 2、静态优于抽象
    如果你并不需要访问一个对象中的某些字段,只是想调用它的某个方法来去完成一项通用的功能,那么可以将这个方法设置成静态方法,这会让调用的速度提升15%-20%,同时也不用为了调用这个方法而去专门创建对象了,这样还满足了上面的一条原则。另外这也是一种好的编程习惯,因为我们可以放心地调用静态方法,而不用担心调用这个方法后是否会改变对象的状态(静态方法内无法访问非静态字段)。

  • 3、对常量使用static final修饰符
    static final int intVal=42;
    这样做定义类不需要方法

  • 4、避免在内部调用GettersSetters方法
    在Android上这个技巧就不再是那么的受推崇了,因为字段搜寻要比方法调用效率高得多,我们直接访问某个字段可能要比通过getter方法来去访问这个字段快3到7倍。

  • 5、使用增强的For循环语法
    增强型For循环(也被成为for-each)可以用于遍历实现Iterable接口的集合以及数组,用Collections,会构造一个Iterator接口去调用hasNext()和next(),用一个ArrayList,手写计数循环要快3倍,但其他集合的增强的for循环的语法是完全等价的显示迭代器的使用。

  • 6、考虑包而不是私有的内部类访问

  • 7、避免使用浮点数
    通常的经验是,在Android设备中,浮点数会比整形慢2倍。
    从速度方面说,在现代硬件上,float和double之间没有任何不同。更广泛的讲,double大2倍。在台式机上,由于不存在空间问题,double的优先级高于float。
    但即使是整型,有的芯片拥有硬件乘法,却缺少除法。这种情况下,整型除法和求模运算是通过软件实现的,就像当你设计Hash表,或是做大量的算术那样。

  • 8、多使用系统封装好的API
    系统的API在很多时候比我们自己写的代码要快的多,它们的很多功能都是通过底层的汇编模式执行的。

  • 9、使用实现类比接口好

  • 10、将成员变量缓存到本地
    访问成员变量要比访问本地变量慢的多。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值