TraceView

TraceView

图形的形式展示执行时间、调用栈等

信息全面,包含所有线程

使用方式

1
2
3
4
5
// 开始
Debug.startMethodTracing("file_name");
// do something ....
// 结束
Debug.stopMethodTracing();

生成的文件在sd卡:Android/data/packagename/files

解析文件

将生成的trace文件导出后,通过Android studio内置的Profile工具进行加载

快捷键:

W:放大
S:缩小
A:左移
D:右移

说明:

  • Thread Chart:函数调用图

    • 绿色:自身代码
    • 橙色:系统api
    • 蓝色:三方api(包括 Java API
  • Flame Chart:火焰图,会把所有相同函数聚合在一起

  • Top Down:函数调用链表

  • Bottom up:谁调用了该函数

  • Wall Clock Time:程序执行时间

  • Thread Time:cpu消耗时间

新方式

新版本 Android studio 可使用 cpu profiler 捉取信息

  • Sample Java Methods
    • 频繁捕获应用的堆栈信息,对运行时性能开销较小,但有可能记录不准确
  • Trace Java Methods
    • 会记录方法的详细执行时间和CPU信息,对运行时性能开销较大
  • Sample C/C++ Functions
    • 需要 Android 8.0 及以上的设备,内部使用 simpleperf 跟踪应用的 native 代码
  • Trace System Calls
    • 需要 Android 7.0 及以上的设备,捕获非常详细的应用运行和应用与系统资源交互情况

总结

TraceView

  • 通过代码进行埋点,可控性更高

  • 运行时开销严重,整体都会变慢,可能会带偏优化方向

cpu profiler

  • 可通过 IDE 随时捕捉线程信息