【Android】Android性能优化

Android性能优化

  1. 何为性能问题?

    在性能测试中存在两个概念:

    1. 响应时间

      指从用户操作开始到系统给用户以正确反馈的时间。一般包括系统处理时间 + 网络传输时间 + 展现时间。对于非网络类应用不包括网络传输时间。响应时间是用户对性能最直接的感受。

    2. TPS(Transaction Per Second)

      TPS为每秒处理的事务数,是系统吞吐量的指标,在搜索系统中也用QPS(Query Per Second)衡量。TPS一般与响应时间反相关。通常所说的性能问题就是指响应时间过长、系统吞吐量过低。在web性能测试中,也会将高并发下内存泄漏归为性能问题。在Android应用程序中由于系统ANR的限制,所以对主线程的响应时间提出了更高的要求。Android ANR的具体要求是指Activity对事件响应不超过5秒,BroadcastReceiver中执行时间不超过10秒。

  2. 性能优化方式

    • 降低执行时间

      这部分包括:a. 缓存(包括对象缓存、IO缓存、网络缓存), b. 数据存储类型优化, c. 算法优化, d. JNI, e. 逻辑优化, f. 需求优化

    • 同步改异步,利用多线程提高TPS

    • 提前或延迟操作,错开时间段提高TPS

      对于数据库优化布局优化Java代码部分优化都可以归纳到上面的几种方式中。

  3. 数据库优化

    • 创建索引
    • 使用事务
    • 其他优化
    • 异步线程

    一. 索引

    简单的说,索引就像书本的目录,目录可以快速找到所在页数,数据库中索引可以帮助快速找到数据,而不用全表扫描,合适的索引可以大大提高数据库查询的效率。

    优点:大大加快了数据库检索的速度,包括对单表查询、连表查询、分组查询、排序查询。经常是一到两个数量级的性能提升,且随着数据数量级增长。

    缺点:索引的创建和维护存在消耗,索引会占用物理空间,且随着数据量的增加而增加。在对数据库进行增删改时需要维护索引,所以会对增删改的性能存在影响。

    • 索引分类

      【Android】Android性能优化_第1张图片

    • 索引的使用场景

      a. 当某字段数据更新频率较低,查询频率较高,经常有范围查询(>, <, =, >=, <=)或order by、group by发生时建议使用索引。并且选择度越大,建索引越有优势,这里选择度指一个字段中唯一值的数量/总的数量。

      b. 经常同时存取多列,且每列都含有重复值可考虑建立复合索引

    • 索引的使用规则

      【Android】Android性能优化_第2张图片

    二. 使用事务

    【Android】Android性能优化_第3张图片

    三. 其他优化

    【Android】Android性能优化_第4张图片

    四. 异步线程

    【Android】Android性能优化_第5张图片

  4. 布局优化

    • 抽象布局标签
    • 去除不必要的标签和View节点
    • 减少没有必要的inflate
    • 其他
    • 布局优调工具

    一. 抽象布局标签

    【Android】Android性能优化_第6张图片

    【Android】Android性能优化_第7张图片

    【Android】Android性能优化_第8张图片

    【Android】Android性能优化_第9张图片

    【Android】Android性能优化_第10张图片

    【Android】Android性能优化_第11张图片

    二. 去除不必要的嵌套和View节点

    【Android】Android性能优化_第12张图片

    三. 减少没有必要的inflate

    【Android】Android性能优化_第13张图片

    四. 其他

    【Android】Android性能优化_第14张图片

    五. 布局调优工具

    【Android】Android性能优化_第15张图片

  5. 代码部分优化

    • 降低执行时间
    • 异步利用多线程提升TPS
    • 提前或延时加载
    • 网络优化

    一. 降低执行时间

    【Android】Android性能优化_第16张图片

    【Android】Android性能优化_第17张图片

    【Android】Android性能优化_第18张图片

    二. 异步利用多线程提升TPS

    三. 提前或延时加载

    四. 网络优化

    【Android】Android性能优化_第19张图片

你可能感兴趣的:(【Android】Android性能优化)