性能优化之卡顿优化

0x0001 查看 CPU 使用率

深入理解 Android 屏幕绘制原理 一文中提到定位卡顿问题,首先要寻找哪些进程占用大量的 CPU,从而一步一步分析卡顿问题,其实造成卡顿的原因有千百种,最终都会反映在 CPU 时间上。

出现卡顿问题后,首先应该查看 CPU 使用率,

  • /proc/stat:查看整个系统的 CPU 使用情况;
  • 通过 /proc/[pid]/stat:查看指定进程的 CPU使用情况;

关于 stat 文件各个属性的含义,以及 CPU 使用率的计算,请查看 Linux环境下进程的CPU占用率

  1. 12940
  2. (d.kfc.activitys)
  3. S
  4. 3560
  5. 3557
  6. 0
  7. 0
  8. -1
  9. 4211008
  10. 141412
  11. 1650
  12. 130
  13. 0
  14. 4181
  15. 866
  16. 1
  17. 1
  18. 20
  19. 0
  20. 93
  21. 0
  22. 104303639
  23. 2147409920
  24. 47524
  25. 18446744073709551615
  26. 1
  27. 1
  28. 0
  29. 0
  30. 0
  31. 0
  32. 4612
  33. 1
  34. 1073776376
  35. 18446744073709551615
  36. 0
  37. 0
  38. 17
  39. 0
  40. 0
  41. 0
  42. 0
  43. 0
  44. 0
  45. 0
  46. 0
  47. 0
  48. 0
  49. 0
  50. 0
  51. 0
  52. 0

同时也可以使用以下几个命令协助排查问题:

0x0002 Android 卡顿分析工具分类

按照获取函数调用的时机,这类工具分为两类:

  • instrument

获取一段时间的所有函数调用,分析这段时间内函数调用流程,寻找待优化的点。

  • sample

采用抽样方式获得某些函数调用,比如每 5 秒获取一次,分析这段时间内的函数调用,寻找待优化的点,然后继续细化分析。

0x0003 TraceView

属于 instrument 类型的分析工具,但是在 Android 5.0 后新增 startMethodTracingSample 方法,用于采样分析。TraceView 利用 Android Runtime 函数调用的 event 时间,将函数运行的耗时和函数调用关系写入 trace 文件。

0x0004 Systrace

Linux 常用的命令工具