首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
iOS启动优化
订阅
Sky823
更多收藏集
微信扫码分享
微信
新浪微博
QQ
7篇文章 · 0订阅
iOS编译过程
iOS 开发中使用的是编译语言,所谓编译语言是在执行的时候,必须先通过编译器生成机器码,机器码可以直接在CPU上执行,所以执行效率较高。他是使用 Clang / LLVM 来编译的。LLVM是一个模块化和可重用的编译器和工具链技术的集合,Clang 是 LLVM 的子项目,是 …
iOS App启动优化(六):实用党直接看这里
添加到启动最早的那个 ViewController 即可。
iOS App启动优化(五):收集符号 && 生成 Order File
启动的相关方法可能在不同的线程执行,如果我们用一个数组直接收集这些符号,会出现线程问题。 听到多线程问题立马想到锁,但是这里因为锁耗费性能比较多所以不推荐使用。建议使用原子队列解决这个问题。 原子队列是栈结构,通过 队列结构 + 原子性 保证顺序。 启动的时候方法执行,__sa…
iOS App启动优化(四):编译期插桩 && 获取方法符号
编译器插桩就是在代码编译期间修改已有的代码或生成新代码。 编译期时,在每一个函数内部二进制源数据添加 hook 代码来实现全局 hook 效果。 说白了我们要跟踪到 每个方法的执行,从而获取到启动时 方法执行的顺序,然后再按照这个顺序去编写order file。 文档是个好东西…
iOS App启动优化(三):二进制重排
我们可以看到图中项目的Page Fault 数量并不多,这是因为当前项目是一个demo,代码和文件都极少。当代码多起来的话,Page Fault的 数量和加载耗时都会随着代码增加而增加。 二进制重排 可以很好优化这个问题,其中心思想是重新排列 方法符号的顺序, 使启动的相关方法…
iOS App启动优化(二):物理内存和虚拟内存
内存是分页管理的,映射表不能以字节为单位,是 以页为单位。 早期的计算机不断启动应用,到达一定数量以后会报错,应用无法正常运行,必须先关闭前面的部分应用才能继续开启。 这是因为早期计算机没有虚拟地址,一旦加载都会 全部加载到内存中 。一旦物理内存不够了,那么应用就无法继续开启。…
iOS App启动优化(一):检测启动时间
冷启动:指APP被后台kill后重新启动APP,这种启动方式叫做冷启动。 热启动:APP的状态由running切换为suspend,APP 没有被kill仍然在后台运行。再次把APP切换到前台,这种启动方式叫热启动。 Xcode 中提供了测量 pre-main 的时间 Edit…