性能优化整理

磁盘I/O优化

规则方案原因
避免主线程 I/O避免主线程操作文件及数据库一半的卡顿问题由主线程I/O 引起
apply替代commitapply异步,commit同步操作
提前初始化Sharepreference多进程中初始化过程时在主线程中
减少I/O读写量减少使用select查找语句减少从数据库中读的数据量,耗时操作
利用缓存减少重复读写内存缓存命中率高
减少使用AUTOINCREMENT创建表维护一个sqlite_squence的内部表来记录该表的最大行号,表操作update,insert和delete都要修改此表内容,带来额外的开销,降低效率
使用合适的数据库分页sqlite是以页为单位,默认1KB(3.12.0版本以前),现在默认为4KB
频繁查询时,建立索引建立索引减少读磁盘数据量
避免无效索引产生冗余读写操作和写入性能
减少I/O操作次数使用8KB Buffer size读/写减少耗时
批量更新数据库使用事务启用事务,减少大量读写操作和次数,提升效率
使用ZipInputStream压缩大量小文件zopFile在Native读取文件,每次在1KB到64KB,而ZipInputStream每次只传递512字节给Native层,如果小文件使用ZipFile,导致Buffer利用率不高。

内存优化

规则方案原因
避免内存泄漏避免Activity泄漏被引用的View、picture等泄漏
减少常驻内存使用RGB565每个像素使用2字节
避免内存重复提升缓存命中率与流畅度
drawable里图片使用Drawable.createFromStream加载使用错误的文件夹,导致图片放大,增加内存
将图片对应的资源文件夹下使用错误的文件夹,导致图片放大,增加内存
减少GC使用inBitmap替代Bitmap减少GC
尽量使用SpraseMap或ArrayMap
重用StringBuilder(如有线程可使用ThreadLocal)利用delete替代new, 给出合理的初始化长度

网络优化

规则方案原因
避免无效流量消耗避免重复上传和下载增加带宽成本
JS/CSS/HTML进行压缩提升速度
避免无效流量消耗使用更优图片压缩优化带宽,提升速度
前台网络I/O < 60KB
定时网络请求合并在一个时间点进行合并请求让网络尽量处在低功耗状态
网络请求失败的充实必须有明显的结束条件导致严重的耗电和服务器压力过大
降低流量风险流量兜底流量异常会通过后台服务器终止协议交互

CPU优化

规则方案原因
核心场景CPU算法最优能用int不要用floatfloat执行时间比int长
选择合适的容器android内存缺乏时,使用ArrayMap、SparseArray等,线程安全考虑使用ConcurrentHashMap等
使用缓存和批量处理来提升算法
充分利用CPU合理选择适当的线程数根据CPU性能

电池优化

规则方案原因
让CPU休眠锁屏,灭屏,放置后台程序,释放活停止耗电服务GPS、WifeManager、Sensor等
锁屏,灭屏释放WakeLock锁不释放无法让CPU休眠,导致耗电
使用缓存和批量预处理来提高算法效率
避免无端电量消耗后台程序CPU不要连续工作5分钟以上。

流畅度优化

规则方案原因
界面流畅核心界面有流畅度和丢帧率的数据上报
FPS平均值>30,Mix>24动画大于24FPS,人眼可以接受
丢帧避免>8,减少丢帧>4

响应时间

规则方案原因
响应时延核心界面要有响应时延数据上报
启动速度小于2s
界面切换速度小于500ms时延小于500ms,用户可以接受
避免黑屏黑屏影响用户体验
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值