mkPlan
mkPlan copied to clipboard
【二进制重排技术之iOS启动速度优化】【Apk重排技术之Android启动速度优化】
最近刚刚离职,目前还在老家吃瓜,简单分析下刚刚看到的一项技术:通过重排技术,来提升应用程序的启动速度。
搜罗了几个事件简单列下:
-
2018.11.8,支付宝发布一篇文章:讲的是通过apk重排技术,来提升app的启动速度;
-
2019.8.7,Facebook分享了:通过二进制布局优化提高iOS启动性能;
-
2019.8.9,头条分享了:基于二进制文件重排,提升App启动速度。
App启动时,需要从磁盘读取数据,由于磁盘IO挺耗性能的,所以在启动阶段,我们要尽可能少的从磁盘读取数据,或者说进行一次IO时要读取尽可能多的有效数据。
所以,不论是Apk重排,还是iOS的二进制重排,都是通过一些手段,统计到启动使用的数据,然后重新排列,将启动时需要加载的数据连续的排列起来,这样一来,本来是需要两次磁盘IO加载两个分散数据的,但在一次磁盘IO中就可以把这两个数据加载了。
特别在较大的App中,这种方式可以明显的减少磁盘IO次数,启动速度会有一个不错的提升(支付宝安卓端10%左右,抖音iOS端15%左右)。
这里大白话普及下基本原理,感兴趣的朋友可以参考文末的资料,后续回归后,我也会尽快的发布相关的demo。
相关链接:
支付宝 App 构建优化解析:通过安装包重排布优化 Android 端启动性能
抖音研发实践:基于二进制文件重排的解决方案 APP启动速度提升超15%
Improving iOS Startup Performance with Binary Layout Optimizations
以及apple官方的文档:
大佬, 有动静了吗