《8-抖音鸿蒙客户端性能防劣化建设-郭同闯-0714.pdf》由会员分享,可在线阅读,更多相关《8-抖音鸿蒙客户端性能防劣化建设-郭同闯-0714.pdf(47页珍藏版)》请在三个皮匠报告上搜索。
1、分享人:郭同闯5年Android客户端性能优化研发经验目前主要负责鸿蒙性能检测工具开发、性能防劣化建设抖音鸿蒙客户端性能防劣化建设目录CONTENTS背景介绍基于Trace Diff的防劣化方案针对多层Import的防劣化方案总结与展望一、背景介绍鸿蒙发展历程2019年发布HarmonyOS 1.0,率先搭配智慧屏产品2021年发布2.0,搭载手机、平板、手表多款产品2023年发布HarmonyOS NEXT,放弃AOSP,不再兼容安卓应用2025年发布首款搭载纯血鸿蒙系统手机Pura X什么是性能防劣化上一版本性能指标当前版本性能指标VS性能劣化用户体验下降保障用户体验劣化归因修复性能指标优
2、先重点建设方法耗时防劣化,逐步完善内存、流畅度等防劣化能力传统性能防劣化数据不准确数据波动大误报率高问题难定位纯人工归因且周期长拦截不及时线上指标拦截太迟劣化易逃逸其他优化点掩盖劣化问题精准性能防劣化开发阶段集成阶段灰度阶段线上全链路防劣化数据全面准确归因快速精准二、基于Trace Diff的防劣化方案版本间防劣化1灰发布1灰bug修复2灰发布正式发版回归测试提交代码集成测试版本选择Webhook CICD事件发版事件测试包:当前发版节点的commit id基准包:上一正式版本的commit id技术方案Test APPBase APPUI自动化Test TraceBase TraceTrac
3、e Diff劣化报告Trace插桩工具etsCheckeretsTransformTracer插桩genAbcHvigor-ohos-pluginsPre BuildCompileArkTSPackageHaphvigor tasksRollup plugins.Trace插桩工具插桩目标:01Constructor:类的构造方法02MethodDeclaration:类方法03FunctionDeclaration:函数插桩内容:01hiTraceMeter.startTrace()开始trace打标02hiTraceMeter.finishTrace()结束trace打标Trace插桩工具
4、AST 插桩示例插桩后trace示例Trace Diff分析新增方法D导致方法A耗时劣化共有方法C导致方法A耗时劣化非子方法调用耗时增加,如IO准确率优化减小波动维度类型目标设备环境网络环境减少网络波动(网络类型、网速等)导致的误报进程清理清理不必要进程,避免资源干扰软件环境缓存清理、账号登录使用相同的用户状态和权限进行测试准确率优化减小波动第一次测试第二次测试第八次测试多次测试分析命中率命中率低于60%无效静态分析调用链CDABE调用链未变动无效准确率优化网络一致性01Feed视频内容不同,导致下载、视频解码耗时不同02AB实验等功能受后端下发配置影响,会执行不同的逻辑分支03某些请求在不同
5、的响应时延下,会执行重试、兜底等策略准确率优化网络一致性对网络数据进行录制回放,保障双包对比测试中网络一致性Test APPTest APPBase APP网络流量网络录制服务网络回放服务MitmProxy抓包方法重命名function funA().function funB().方法封装function funA().function funB()funA().方法迁移function funC()funA().function funB()funA().准确率优化堆栈相似度准确率优化堆栈相似度fun A删除节点CHDKfun B新增节点CHDKEA-C-HB-C-HA-D-KB-E-D-
6、K相似度匹配相似堆栈的节点为 x1 xi,每个节点的权重为 y1 yi,堆栈相似度为 z1 zi堆栈相似度=y1*z1+.+yi*zi优化后方案Test TraceBase TraceTrace Diff劣化报告Test APPBase APP环境固化网络回放UI自动化对比测试命中率检测静态分析堆栈相似度置信度校验效果展示Mock 5 200ms 多组方法耗时劣化,以观测劣化归因效果效果展示诊断结果准确率由 40%提升至 80%MR防劣化劣化修复量大,无法跟版修复灰度阶段发现劣化略晚,开发阶段发现更佳MR防劣化MR防劣化当日 00:00 任务开启前日最后