在上面的那种写法下,如果数据的量级并不大的话,应该还可以接受,可是如果数据集非常大,会有严重的效率问题。那么我们看下改进的写法,把排序的操作打包绑定只执行一次:

  上面是Batching的一种示例:把重复的操作拎出来,打包只执行一次。
  Caching的理念很容易理解,在很多方面都有体现,下面举一个for循环的例子:

  上面这2种基础技巧非常实用,积极恰当的使用能够显著提升运算性能。
  5) Blocking the UI Thread
  提升代码的运算效率是改善性能的一方面,让代码执行在哪个线程也同样很重要。我们都知道Android的Main Thread也是UI Thread,它需要承担用户的触摸事件的反馈,界面视图的渲染等操作。这意味着,我们不能在Main Thread里面做任何非轻量级的操作,类似I/O操作会花费大量时间,这很有可能会导致界面渲染发生丢帧的现象,甚至有可能导致ANR。防止这些问题的解决办法是把那些可能有性能问题的代码移到非UI线程进行操作。
  6) Container Performance
  另外一个我们需要注意的运算性能问题是基础算法的合理选择,例如冒泡排序与快速排序的性能差异:

  避免我们重复造轮子,Java提供了很多现成的容器,例如Vector,ArrayList,LinkedList,HashMap等等,在Android里面还有新增加的SparseArray等,我们需要了解这些基础容器的性能差异以及适用场景。这样才能够选择合适的容器,达到佳的性能。