初识性能优化及工具(1) | 青训营笔记

123 阅读3分钟

这是我参与「第四届青训营」笔记创作活动的第8天

课程主要内容

  • 为什么做性能优化?
  • 性能优化是什么?
  • 最佳性能工具选型
  • 如何做性能优化?

1. 为什么要做性能优化?

  • 从业务角度来看:

    1. 性能优化带来体验的改善进而帮助业务指标的提升
  • 从更长的时间范围来看:

    1. 硬件性能提升速度变缓
    2. ARM平台受益于架构和工艺的演进,最近几年趋势比X86平台好
  • 从更长的时间范围来看:

    1. 多核带来的提升取决于可以真正并行执行的部分
  • 未来?

    1. 未来会有新的材料和工艺来驱动芯片性能的进一步提升,但是目前还没有成熟
    2. 移动处理器还受到电池技术的限制
    3. 软件的性能优化仍可持续带来提升

2. 性能优化是什么?

性能优化的主要目标

性能即体验

  • :最快显示效率、最快网络速率、最快UI响应
  • :最佳用户体验,减少强打断
  • :最低存储、最低功耗、最低流量消耗、最低计算资源

性能优化分类

  1. 流畅性优化
    • 快-极致的响应与流畅的体验
  2. 资源优化
    • 省-最小负载带来最大的收益
  3. 稳定性优化
    • 稳-稳定的实现,减少不必要打断
  4. 系统级优化
    • 拓展-底层booster

流畅性优化

Android的线程结构

Screenshot_20220810_234132_com.ss.android.lark_ed.jpg

我们的代码影响主要影响: System Events、Input Events、Application、Services、Alarm

界面刷新: 保证在16ms甚至更短的时间内完成绘制。

卡顿感知的产生:

  1. 我们的输入事件无法及时响应(划不动)。
  2. 输入事件的耗时比较长(划的时候卡卡的)。
  3. 很多任务都是在主线程做的。

解决卡顿:  把耗时操作移到其他线程操作,主线程只为交互和刷新负责。

人肉眼能感知到的不卡顿的最低帧数是:25帧

如果没有vsync信号会产生画面撕裂。

资源优化

资源: 即Android手机的软件和硬件资源,通俗意义上应用依赖的移动终端的有限资源和系统设置的数值,即功耗、存储、流量、系统参数、CPU、内存等。

资源优化:  

  • 端侧资源 (功耗、内存、存储、CPU、GPU、网络、音量、亮度、etc……)
  • 服务侧资源 (CDN带宽、API流量)

稳定性优化

稳定性:  

  • 崩溃 Crash
  • 超时 Timeout (UI Jank卡顿掉帧、ANR应用无响应)

ANR是(Application Not Responding)的缩写,即应用程序无响应。如果Android应用的界面线程处于阻塞状态的时间过长,会触发App ANR错误。如果应用位于前台,系统会向用户显示一个对话框,ANR对话框会为用户提供强行退出应用或等待的选项。

系统级优化

充分利用应用程序和系统程序,综合提升应用的性能表现。

后记

通过今天课程的学习,我学习了做性能优化的原因以及什么是性能优化,了解了性能优化的主要目标和分类,为性能监控工具的学习做好准备。