前言
我的一个朋友在阿里上班,勤勤恳恳工作了两三年,公司却迟迟不给他涨工资。他来找到我,他说他很苦恼,说公司最近新来了一个员工都比他的工资要高,就因为他对性能调优这方面很擅长。
什么是性能优化?
在同一个手机里面,同样功能的app,哪个跑的快,哪个不卡,哪个就性能高;我们要找到性能低的地方,并且把这些地方解决掉,这个就是性能优化;现在有很多软件开发公司以及开发者追求的最终目标不再是简单地实现功能,更多的是提供更好的用户体验,而性能问题在用户体验中扮演着重要角色。
为什么要进行性能调优?
如果用户想要完成一个同样的操作,一个 App 需要 10 秒,而同类 App 仅需要 3 秒,作为用户, 会怎么选?此外,欠佳的性能还可能导致 ANR(Application Not Responding,指应用程序无响应)情况的出现。再加上一旦发生卡顿,就意味着接下来可能发生手机发热、电量快速消耗等关联问题,这些都很可能导致用户的流失。 因此,改善 App 性能不容忽视。系统性能调优不仅可以提高系统性能,还能为公司节省资源。这也是我们做性能调优的最直接的目的。所以,公司也更愿意招聘有这方面技术的人才.
下面给大家分享一份 722页的《360°全方面性能调优》文档,文档主要有四个大章节,设计思想与代码质量优化; 程序性能优化;开发效率优化;APP 性能优化实践;
第一章 设计思想与代码质量优化
一,六大原则
- 单一职责原则
- 里氏替换原则
- 依赖倒转原则
- 接口隔离原则
- 迪米特法则
- 合成复用原则
二,设计模式
- 结构型模式
- 创建型模式
- 数据结构
三,数据结构
- 数组
- 栈
- 队列
- 链表
- 树
- 图
- 堆
- 散列表
四,算法
- 排序算法
- 查找算法
第二章 程序性能优化
一,启动速度与执行效率优化
- 冷启动和热启动解析
- APP启动黑白屏解决办法
- APP 卡顿问题分析及解决方案
- 启动速度与执行效率优化之StrictMode
二,布局检测与优化
- 布局层级优化
- 过度渲染
三,内存优化
- 内存抖动和内存泄漏
- 内存大户,Bitmap 内存优化
- Profile 内存监测工具
- Mat 大对象与泄漏检测
四,耗电优化
- Doze&Standby
- Battery Historian
- JobScheduler、WorkManager
五,网络传输与数据存储优化
- google 序列化工具 protobuf
- 7z 极限压缩
六,APK 大小优化
- APK 瘦身
- 微信资源混淆原理
七,屏幕适配
- 为什么要进行屏幕适配?
- 屏幕分辨率限定符与 smallestWidth 限定符适配原理
- 为什么选择 smallestWidth 限定符适配?
- 怎么适配其他 module?
八,OOM 问题原理解析
- adj 内存管理机制
- JVM 内存回收机制与 GC 算法解析
- 生命周期相关问题总结
- Bitmap 压缩方案总结
九,ANR 问题解析
- AMS 系统时间调节原理
- 程序等待原理分析
- ANR 问题解决方案
十,Crash 监控方案
-
Java 层监控方案
-
Nativie 层监控方案
第三章 开发效率优化
一,分布式版本控制系统 Git
- 企业高效持续集成平台场景介绍
- GIT分布式版本控制系统
- GIT分支管理
二,自动化构建系统 Gradle
- Gradle 与 Android 插件
- Transform API
- 自定义插件开发
- 插件实战
第四章 APP 性能优化实践
一,启动速度
二,流畅度
- 流畅度相关工作概述
- 性能问题分析的一些工具和套路
- 通过性能数据数据分析
三,抖音在 APK 包大小资源优化的实践
- 概述
- 图片压缩
- webp 无侵入式兼容
- 多 DPI 优化
- 重复资源合并
- shrinkResource 严格模式
- 资源混淆(兼容 aab 模式)
- ARSC 瘦身
四,优酷响应式布局技术全解析
- 优酷APP响应式布局技术概述
- 优酷APP响应式布局Android落地
- 优酷APP响应式布局在分发场景的落地
- 优酷APP响应式布局在消费场景的落地
- 优酷APP响应式布局之测试方案
五,网络优化
- 手机淘宝在网络的链路优化
- 百度APP在网络深度优化的实践
六,手机淘宝双十一性能优化项目揭秘
- 一秒法则的实现
- 启动时间和页面帧率提升20%
- Android 手机内存节省50%
七,高德 APP 全链路源码依赖分析
- 背景
- 高德 APP 平台架构
- 基础实现原理
- 项目架构
- 应用场景及实现原理
八,彻底干掉 OOM 的实战经验分享
- 排查内存泄漏
- 兜底策略
- 内存峰值太高
- 特大图排查优化
九,微信 Android 终端内存优化实践
最后
性能优化是我们进阶的毕竟之路。So,我们必须要会,至于“会”到什么程度,就要看个人理解了。代码真的是重质不重量,质量高的代码,是当前代码界提倡的,当然写出高质量的代码肯定需要一个相当高的专业素养,这需要在日常的代码书写中逐渐去吸收掌握,谁不是每天都在学习呀,目的还不是为了一个,为实现某个功能写出高质量的代码。
相关视频
【大厂面试重点分析】