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

二进制重排简化板

作者: 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

    相关文章

      网友评论

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

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