美文网首页
二进制重排简化板

二进制重排简化板

作者: Fat_L | 来源:发表于2021-05-17 20:20 被阅读0次

二进制文件的简化版方案

原理:
减少缺页中断(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

相关文章

  • 二进制重排简化板

    二进制文件的简化版方案 原理: 简化版做法 流程 其他:手淘静态库插桩方法:通过修改汇编代码记录函数 静态库由 ....

  • 简谈二进制重排

    二进制重排 二进制重排其实并不是什么特别新颖的技术。 目的 二进制重排(layout)的目的在于将hot code...

  • iOS 优化-二进制重排

    基于二进制文件重排的解决方案 APP启动速度提升超15%启动优化之Clang插桩实现二进制重排iOS启动优化之二进制重排

  • 二进制重排,clang插桩

    二进制重排,clang插桩

  • iOS 启动优化之二进制重排

    首先需要了解什么是二进制重排, 二进制重排为什么能减少启动时间. 编译器把源文件编译成Mach-O可执行文件时,...

  • iOS 启动优化-二进制重排

    一、重排目的 二进制重排就是为了减少启动时的缺页异常Page Fault从而减少启动时间 二、查看Page Fau...

  • 二进制重排

    一、首先获取 重排后方法执行顺序.h 文件 import NS...

  • 二进制重排

    http://yulingtianxia.com/blog/2019/09/01/App-Order-Files/...

  • 二进制重排

    clang插装[https://clang.llvm.org/docs/SanitizerCoverage.htm...

  • 二进制重排

    具体参考: https://www.jianshu.com/p/07bb4c99252c

网友评论

      本文标题:二进制重排简化板

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