《上午场 - 3 - 吴洋 - 终端编译技术的探索与实践.pdf》由会员分享,可在线阅读,更多相关《上午场 - 3 - 吴洋 - 终端编译技术的探索与实践.pdf(33页珍藏版)》请在三个皮匠报告上搜索。
1、终端编译技术的探索与实践蚂蚁集团-终端技术部-吴洋 录 C o n t e n t s背景编译和移动端12345重点技术实践编译程化未来展望1.1 背景-下沉市场 环境变化终端技术的挑战红利顶户增放缓下沉市场发低端体验重要新系统优化红利丢失,iOS 17不持iPhone X以下设备;设备硬件化,低端机户年增400多万;5s卡顿,百万级/;跳5s未完成,百万级/;使环境复杂,弱、系统升级、刚开机整体卡顿;反馈卡、慢等舆情每达上百条。1.2 背景-开放态 终端技术的挑战环境变化技术开放技术管控技术保障付开放数字化开放能开放平台开放程序,以商家为中的开放Partners 合作伙伴AppmPaas1.
2、3 背景-隐私合规 终端技术的挑战环境变化终端技术的挑战iOSAndroid个保法效,监管环境趋严商提供能查看权限记录户对隐私信息愈发敏感隐私监管机制,业务险不可控不具备证清能,遇到投诉被动隐私相关的舆情来越来越多1.4 背景-过去我们做的事2.1 编译和移动端-关系代码编译可执件安装包(压缩)安装包下载并解压(解压)运启动资源业务交付户体验 编译速度 管控能 包 性能2.2 编译和移动端-编译速度编译速度 缓存(增量编译,依赖库缓存,软链技术)减量(jdk11升级,志缩减,7z升级)异步化(分布式编译,并扫描,产物异步上传)硬件升级(算*3,docker配置8C8G16C40G)编译速度优化
3、60%0 产物异常依赖环境构建参数编译插件安装包2.3 编译和移动端-管控能研发阶段Clang Static CheckerLint产物分析问题前置静态扫描测试阶段指令编辑插桩覆盖率稳定性运阶段统切敏感调函数管理隐私合规InstantRunDexAop推包动态发布线上问题(仅Android)2.4 编译和移动端-安装包重复指令压缩包优化6.6%解压包优化8.2%(20+M)(10+M)利压缩算法特点,在链接阶段将相似函数聚合在起,提升压缩率。函数重排提取相同指令序列,在编译阶段将多份代码合并成份,提升复率。重复指令复指令更激进的死代码消除策略,通过算法决策掉法执到的指令。线下函数使率案,通过将
4、代码按使率排名来推进治理。线上2.5 编译和移动端-性能cpu执效率代码排列内联Function排列Basic Block排列可选分优化VCS预测性执TPIDRRO_ELO寄存器虚机执效率优化10.7%低端机冷启动速度优化8.5%(150ms)3.1.1 基于函数重排的压缩包优化-LZ算法 3.1.2 函数重排-安装包压缩率 可执件、资源、系统库负向实验,函数随机排列后,付宝压缩包增12%!低压缩率 函数排列压缩率 函数排列3.1.3 函数重排-排列模型 int fibonacci(int n)int prev=0;int curr=1;for(int i=2;i=n;i+)int temp=
5、curr;curr=prev+curr;prev=temp;return curr;int fibonacci(int n)if(n=1)return n;else return fibonacci(n-1)+fibonacci(n-2);fibonacci(int):sub sp,sp,#32 str w0,sp,#24 ldr w8,sp,#24 subs w8,w8,#1 cset w8,gt tbnz w8,#0,.LBB0_2 b .LBB0_1.LBB0_1:ldr w8,sp,#24 str w8,sp,#28 b .LBB0_7.LBB0_2:str wzr,sp,#20 fi
6、bonacci(int):sub sp,sp,#32 stp x29,x30,sp,#16 add x29,sp,#16 str w0,sp,#8 ldr w8,sp,#8 subs w8,w8,#1 cset w8,gt tbnz w8,#0,.LBB0_2 b .LBB0_1.LBB0_1:ldr w8,sp,#8 stur w8,x29,#-4 b .LBB0_3 int func1(int x1,int x2)return x1+x2;double func2(double d1,double d2)return d1-d2;int func3(int x1,int x2)return