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