客户端性能之冷热启动

Posted on Posted in 客户端性能

我的目的就是小白看了也会使用。

一、冷热启动

1、定义

冷启动:杀掉进程后重新启动应用,这时系统会重新创建一个新的进程分配给该应用,会先创建和初始化Application类,再创建和初始化MainActivity类(包括一系列的测量、布局、绘制),最后显示在界面上。

热启动:按back键、home键返回后再次启动应用,这种启动会从已有的进程中来启动应用,所以直接走MainActivity类。

ps:因为一个应用从新进程的创建到进程的销毁,Application只会初始化一次。

2、 测试方法

1)通过工具查看

  • 先准备好环境,安装好sdk或者直接安装Android Studio;
  • 连上手机,在Android Studio或ddms界面输入搜索条件:Displayed
  • 实际操作真机,得出以下数据。

Displayed可以显示启动加载代码、初始化工作,从启动进程到第一次绘制完成所消耗的时间

如图所示: image

记录Total后面的数值即可,单位ms。

2)通过adb logcat命令查看

这种方式类似于点1,只是通过命令行直接打印出日志

  • 先准备好adb环境,可参照之前文档;
  • 连上手机,命令行输入:adb logcat -s ActivityManager:I | grep Displayed
  • 直接操作手机即可对应打印出时间信息,只需要看total即可。

如图所示

image

3)通过adb am命令查看

  • 先准备好环境,可参照之前文档;
  • 连上手机,先确定好应用名与主Activity,命令行输入:aapt dump badging 路径/文件名.apk
  • 根据得到的应用名与主activity,输入:adb shell am start -W 应用名/主activity

如图所示: image

名词解释:
1ThisTime:表示一连串启动Activity的最后一个Activity的启动耗时;
2TotalTime:表示新应用启动的耗时,包括新进程的启动和Activity的启动,但不包括前一个应用Activity pause的耗时;
3WaitTimeWaitTime= endTime - startTime,就是总的耗时,包括前一个应用Activity pause的时间和新应用启动的时间。 一般只要关心TotalTime即可,单位ms。

重复测试需要关闭冷/热启动:(或者手动操作

  • 关闭冷启动,输入命令:adb shell am force-stop 应用名
  • 关闭热启动,输入命令:adb shell input keyevent 3(等同于home)

我们一般冷热启动是查看kill掉或者双击返回再启动这两个主要场景,你可以加上初次启动(清除数据)或home出去再启动这两个场景。

3、数据分析
解释说明:
1Best:最好,最优结果;
2Good:好,相对而言较好;
3Acceptable:可接受的,必须要达到的标准;
4、低于Acceptable的,视为存在瓶颈,需优化。
性能指标 Best Good Acceptable
冷启动速度
(单位:ms)
≤600 ≤700 ≤1000
热启动速度
(单位:ms)
≤200 ≤300 ≤600
4、场景分析

1)取竞品的数据作为对比;

2)取历史版本的数据做对比。

发表评论

电子邮件地址不会被公开。 必填项已用*标注