Skip to content

Latest commit

 

History

History
104 lines (68 loc) · 2.62 KB

speed-monitor.md

File metadata and controls

104 lines (68 loc) · 2.62 KB

应用测速功能

目前测速点主要有:

  1. Application创建耗时
  2. 页面测速
  3. 应用冷启动测速
  4. 页面网络请求耗时监控

具体耗时统计的含义如下图:

pic

使用

测速功能主要是通过编译期字节码插桩来完成的,因此需要引入rabbit插件:

应用build.gradle


rabbitConfig {
    
    enableSpeedCheck = true //不需要设置,默认是打开的

    pageSpeedMonitorPkgs = ['com.susion.rabbit.demo']  // 指定测速范围
}

配置

可以在rabbit初始化时提供RabbitAppSpeedMonitorConfig对象来对要监控的内容进行配置:

rabbitConfig.monitorConfig.monitorSpeedList = loadMonitorSpeedConfig()
Rabbit.config(rabbitConfig)

这里loadMonitorSpeedConfig()是从assert文件夹下读取了配置:

 private fun loadMonitorSpeedConfig(): RabbitAppSpeedMonitorConfig {
        try {
            val jsonStr =
                FileUtils.getAssetString(RabbitMonitor.application!!, "rabbit_speed_monitor.json")
            if (jsonStr.isEmpty()) return RabbitAppSpeedMonitorConfig()
            return Gson().fromJson(jsonStr, RabbitAppSpeedMonitorConfig::class.java)
        } catch (e: Exception) {

        }
        return RabbitAppSpeedMonitorConfig()
    }

rabbit_speed_monitor.json:

{
  "home_activity": "MainActivity",
  "page_list": [
    {
      "page": "ForumContainerActivity",
      "api": [
        "api/xxx1",
        "api/xxx2"
      ]
    }
    ...
  ]
}

home_activity:它指定了应用的入口Activity, 主要和应用冷启动逻辑相关联,如果配置的此项,那么冷启动耗时可以测量到上图的中T6

page_list: 用来配置每一个测速页面。当配置的api中的接口都请求完成后就会触发这个页面的T6点。

当然你也可以从网络动态下发配置,对于这种情况你可能需要使用这个API:

Rabbit.reConfig(configWithSpeedList)

在开始测试前不要忘记打开测速功能

统计示例

最终生成的测速结果如下图:

页面渲染 & 网络耗时

应用冷启动

参考文章

rabbit应用测速实现原理

Android自动化页面测速在美团的实践