这是我参与「第四届青训营 」笔记创作活动的第五天。这篇笔记主要是对安卓客户端"初识性能优化及工具"这节课中做性能优化的原因以及性能优化概念部分的记录。
笔记
1.为什么做性能优化
从业务角度:性能优化带来体验的改善,进而帮助业务指标的提升
从更长的时间范围来看:硬件性能提升速度变缓;ARM平台受益于架构和工艺的演进,最近几年趋势比X86平台好。
从更长的时间范围来看:多核带来的提升取决于可以真正并行执行的部分。
未来:未来会有新的材料和工艺来驱动芯片性能的进一步提升,但是目前还没有成熟;移动处理器还受到电池技术的限制;软件的性能优化仍可持续带来提升。
2.性能优化是什么
性能优化的目标: 快,稳,省。性能即体验。
性能优化分类:
流畅性优化(快:极致的响应与流畅的体验)
资源优化(省:最小负载带来最大的收益)
稳定性优化(稳:稳定的实现,减少不必要打断)
系统级优化(扩展:底层booster)
2.1流畅性优化
我们的代码影响: 系统事件;输入事件;应用事件;Services;定时事件。
页面刷新: 保证每16ms或者更短的时间内UI绘制一次。
解决卡顿: 把耗时操作移到其他线程操作,主线程只为输入和刷新负责。
人肉眼能感知到的不卡顿的最低帧数:25帧
如果没有 vsync 信号会产生画面撕裂的的问题。
2.2资源优化
资源:安卓手机的软件和硬件资源,通俗意义上应用以来的移动终端的有限资源和系统设置的数值。
资源优化: 端侧资源(功耗、内存、存储、CPU、GPU、网络、音量、亮度,etc),服务侧资源(CDN带宽、API流量)
2.3稳定性优化
稳定性: 崩溃Crash,超时Timeout(卡顿掉帧UI Jank, 应用无响应ANR)
ANR: 应用程序无响应,Application Not Responding。如果Android应用的界面线程处在阻塞状态的时间过长,会触发App ANR错误。如果应用位于前台,系统会向用户显示一个对话框,ANR对话框会为用户提供强行退出应用或等待的选项。
2.4系统级优化
了解相关模块,理解性能
总结
通过这个部分的学习,我了解到了性能优化的原因以及做性能优化的有关概念,知道了平常使用的手机APP中开发者们为了性能优化所做的努力。