您的位置:首页 > 移动开发 > Android开发

【Android】Android性能优化

2016-01-31 22:11 330 查看

Android性能优化

何为性能问题?

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

响应时间

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

TPS(Transaction Per Second)

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

性能优化方式

降低执行时间

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

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

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

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

数据库优化

创建索引

使用事务

其他优化

异步线程

一. 索引

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

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

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

索引分类



索引的使用场景

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

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

索引的使用规则



二. 使用事务



三. 其他优化



四. 异步线程



布局优化

抽象布局标签

去除不必要的标签和View节点

减少没有必要的inflate

其他

布局优调工具

一. 抽象布局标签













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



三. 减少没有必要的inflate



四. 其他



五. 布局调优工具



代码部分优化

降低执行时间

异步利用多线程提升TPS

提前或延时加载

网络优化

一. 降低执行时间







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

三. 提前或延时加载

四. 网络优化

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: