You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
合作与生态
支持与服务
开发者
了解我们
导航

Android SimplePerf

更新时间:2023.02.03 10:30:23

SimplePerf是NDK软件包中提供的一种多功能Android原生CPU评测工具,可以用于分析Android应用程序和运行在Android上的本地进程,可以分析Android上的Java和C++代码。

卡顿问题及解决方案

性能优化:卡顿及解决方案

  • 卡顿问题的概述:现象、归类、特征、归因
  • 卡顿问题的解决方案及思路
  • 涉及到相关Android系统原理机制

SimplePerf介绍

性能优化:SimplePerf工具

  • SimplePerf工具简介、工作原理
  • 使用:端上采集、分析、生成各种报告
  • 优化案例

步骤一:指定NDK Location

  1. 单击右上角doctor,进入诊断页面。

  2. 单击Android > NDK工具链,会自动发现和配置本地NDK Location。

  3. 未自动配置,或者用户需要手动指定时,单击自定义ANDROID_NDK路径进入自定义ANDROID_NDK路径页面,输入自定义路径,然后单击确定

推荐下载NDK_r20b(20.1.5948944)版本,已兼容适配,其它版本不确定。

步骤二:检测环境

进入SimplePerf功能前会自动进行一系列与运行时env相关的必要检查,节点不通过时红色显示,开始按钮置灰不可单击。env检查通过,开始按钮亮起,可单击进行后续操作。每个节点检查不通过时,都有对应的“刷新”操作。各检测项说明如下:

  • 设备及连接性检查【强】:Android设备、并已正常连接到PC端

  • App选择【强】:选取Android应用

  • ADB环境是否正常【强】:正常

  • NDK环境是否正常【强】:正常

  • SimplePerf环境是否正常【强】:正常

  • App应用是否支持Debug/Profile【强】:支持

步骤三:启动采集

  1. 选择进程。
    同性能测评、dumpHeap功能一样,会自动选择好当前进程,用户无需干预。

  2. 填写最大Trace时间
    单位:秒。默认:10s,最小5s,最大600s。

  3. 单击启动,向端侧发起record命令,采集数据。

    采集期间会给出状态、错误、或进度等提示。

    • 状态:采集、分析、展示、错误。
    • 进度:进行中的进度。
    • 错误:会给出相关的Dialog方案展示。

步骤四:查看结果

基本信息区域参数解释如下:

参数
说明
Cmdline端侧命令
ArchCPU架构类型
Event事件
Samples样本数量
EventCount事件数量

函数列表中参数解释如下:

参数
说明
OverHead函数耗时占比
Command指令
Pid进程ID
Tid线程ID
SharedObject共享对象
Symbol符号相关

列表通用功能:翻页、字段排序、搜索过滤筛选、重置筛选、空页面等

  • 排序:OverHead、Pid、Tid
  • 关键字搜索:Command、Shared Object、Symbol
  • 综合意图:Select * from table where Command = 'xx' and SharedObject = 'xx' and Symbol = 'xx' order by Overhead, Pid, Tid

步骤五:发起分析

注意

发析时需要python环境(推荐python 3),并已配置好环境变量,确保命令行里能执行python指令。Mac一般自带,Windows可能需要手动安装。

单击查看分析结果发起数据分析,loading持续若干秒(一般5-10s,视数据记录大小可能loading时间较长)后给出分析结果,会自动跳转到浏览器里打开report.html。

Chart Statistics统计图表

  • 概要:记录时间、设备信息、指令、事件数量。
  • 进程与线程:函数的统计饼图,可多级下钻。

Sample Table采样表

  • 采样记录item:展示了函数及执行时间、占比。
  • 可关键字搜索函数名。
  • 可单击某条item会跳转到指定函数和线程的caller/callee双向聚合图。

Framegraph火焰图与消耗图

  • 查看每个线程的火焰图,默认展示10个线程,需要可以展开查看更多。
  • 单击看查函数详细信息。

Function

Function指定函数和线程的caller/callee双向聚合图。

其他操作(可选)

查看历史记录

  • 每单击启动按钮一次,即全新采集生成一次,本地会产生一条datetime_perf.data数据记录。
  • 历史文件记录列表里展示了本地所有datetime_perf.data。
  • 下拉选择其中一条,查看具体结果。

上传perf.data文件

同dumpHeap功能类似,可上传perf.data原始文件,分析生成结果

功能限制

  • debug包:
    可以调试应用,配置android:debuggable=true,支持debuggable的包。详情请参见官方说明

  • release包:
    指定设备用户通过本地调试工具对此应用进行性能分析,配置<profileable android:shell="true" >。详情请参见官方说明