二进制文件的简化版方案
原理:
减少缺页中断(Page Fault)次数,将启动需要的代码放到同一个page里面,而不是分散。
减少一个缺页终端次数加快0.6~0.8mm时间
简化版做法
通过静态扫描和运行时trace找到启动时候调用的函数。
主要针对load和部分didFinishLaunchingWithOptions之后的符号二进制重排。
流程
拿到LinkMap文件
1、buildSetting-write link map file 设置为YES。
2、运行一遍工程,拿到LinkMap文件。
静态扫描load方法
3、修改readLinkMap.sh里的read_file_path和orderFile_path路径
4、静态扫描运行脚本“sh readLinkMap.sh”生成orderFile
hook 运行的OC方法
5、工程引入TimeProfiler,在Appdelegat-didFinishLaunchingWithOptions方法执行6tartTrace()
6、shake一下,弹出TimeProfilerVC,将启动到进入第一个界面运行过程中方法名筛选入orderFile
xcode引入二进制重排文件
7、orderFile.txt路径放入xcode-buildSetting-order_file
其他:
手淘静态库插桩方法:通过修改汇编代码记录函数
静态库由 .o 文件组成,对 .o 中的函数代码进行修改,在每个函数的开头插入调用我们指定记录函数的指令。
参考
https://mp.weixin.qq.com/s/Drmmx5JtjG3UtTFksL6Q8Q
https://www.codercto.com/a/90509.html
https://blog.csdn.net/Taobaojishu/article/details/103825897
网友评论