美文网首页
【iOS启动优化】-二进制重排

【iOS启动优化】-二进制重排

作者: Gaizka | 来源:发表于2021-08-22 18:59 被阅读0次

背景:

去年工作成果,现在将有道的笔记转移这里,有问题大家可以探讨,我们可以通过二进制重排优化启动时间,减少page-fault次数,优化的方向是减少page-in操作,需要将启动相关的系统函数和应用函数进行放入一个page里面,正常一个page是可以存储所有的启动相关的函数的,然后将这些启动函数的函数签名写入.order文件供xcode 的链接器ld消费,那么我们第一步需要拿到启动相关的函数?具体步骤如下:

启动相关的函数:

第一步:配置apple clang custom compiles 的配置 在other-c-flag里增加-fsanitize-coverage=func,trace-pc-guard配置,系统会给每一个函数调用之前插入一个 __sanitizer_cov_trace_pc_guard 函数的hook,需要外部自己实现,拦截所有的函数信息

第二步:将获取的函数信息存在一个列表里,等待启动完毕,写入.order文件存入我们沙盒下任意目录,因为考虑到page的准确性,我们可以多运行几遍
,拿到最准确的启动函数信息

第三步:xcode ->windows->device and simulator device -> 下载对应的包信息取出对应的order文件,拷贝到我们的目录下

注意:大家第一次可以使用我写好的的pod库去获取启动相关的函数信息
每一次会存在沙河/temp目录下

pod 'ClangTraceLaurchMethods', :git => 'git@github.com:GE-GAO-ZHAO/ClangTraceLaurchMethods.git', :branch => 'dev'

消费order文件:

第一步:xcode-build-setting-linking 设置order-file的path为.order文件的路径即可
第二步:关掉我们获取启动函数的所有配置和注释相关的代码,这时再去command + r

优化成果检测:

第一种:system trace 看下page -falut次数,自己google看下
第二种:可以通过fishhook看mian函数之后优化前后的时间消耗

相关文章

网友评论

      本文标题:【iOS启动优化】-二进制重排

      本文链接:https://www.haomeiwen.com/subject/bnrhiltx.html