首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
iOS进阶
订阅
sauce_xxoo
更多收藏集
微信扫码分享
微信
新浪微博
QQ
25篇文章 · 0订阅
Cocoapods-sled 让 iOS 组件二进制化变得简单
Cocoapods-sled 通过复用 Xcode DerivedData 缓存实现 iOS 项目 Pod 库二进制化,让二进制化变得简单,不用相关基建,即插即用。
深入探索 iOS 启动速度优化(二进制重排)
去年年底二进制重排的概念被宇宙厂带火了起来,出于学习的目的,综合网上已有资料并总结实现了下,以便对启动优化有更好的了解。 对比了网上的实现方式,抖音通过手动插桩获取的符号数据,包括C++静态初始化、+Load、Block等都需要针对性处理,就其复杂度来说感觉性价比不高;手淘的方…
iOS App启动优化(二):物理内存和虚拟内存
内存是分页管理的,映射表不能以字节为单位,是 以页为单位。 早期的计算机不断启动应用,到达一定数量以后会报错,应用无法正常运行,必须先关闭前面的部分应用才能继续开启。 这是因为早期计算机没有虚拟地址,一旦加载都会 全部加载到内存中 。一旦物理内存不够了,那么应用就无法继续开启。…
iOS线程数量监控工具
简单却强大的线程监控工具 KKThreadMonitor :当线程过多或瞬间创建大量子线程(线程爆炸),控制台就打印出所有的线程堆栈。便于分析造成子线程过多或线程爆炸的原因。 有一定iOS开发基础的,应该都知道不合理创建线程,是会造成性能问题的。而业务的积累和迭代过程,可能就不…
深入探索 iOS 启动速度优化
App 的启动时间是体现其性能优劣的一个重要指标,启动时间越快用户的等待时间就越短,提升用户体验感,大厂应用甚至会做到“ 毫秒必究 ”。 本篇文章主要针对冷启动方式进行优化分析,介绍常用的检测工具及优化方法。 Apple 官方的《WWDC Optimizing App Star…
iOS底层学习 - 从编译到启动的奇幻旅程(一)
总体来说,一个APP从编写完代码到运行,就经历了两大步骤,即编译和运行,这一章节,主要来看一下APP的进行编译的。 iOS的代码,是通过编译器将代码直接编写成机器码,然后直接在CPU上运行机器码的,这样能使得我们的app和手机都能效率更高,运行更快。C,C++,OC等语言,都是…
懒人版二进制重排
0. 序言 第一篇讲了动态库转静态库和二进制重排带来的启动优化以及其原理。 第二篇讲了动态库转静态库到底带来了哪些改变,以及实践中遇到的问题应该如何解决。 本篇将介绍懒人版的Clang插桩导出主工程和三方库启动相关的符号表,原理可以参考《我是如何让微博绿洲的启动速度提升30%的…
iOS LLVM及编译过程
优化器端的任务是改善代码的运行时间,例如消除冗余运算等。 OC、c、c++ 使用的编译器前端是clang;Swift使用的是Swift;后端都是LLVM。 传统的编译器设计把前端、优化器、后端集成在一起,需要支持新语言或新硬件结构时就必须重新开发一套编译器。LLVM的设计模式很…
iOS App启动优化(五):收集符号 && 生成 Order File
启动的相关方法可能在不同的线程执行,如果我们用一个数组直接收集这些符号,会出现线程问题。 听到多线程问题立马想到锁,但是这里因为锁耗费性能比较多所以不推荐使用。建议使用原子队列解决这个问题。 原子队列是栈结构,通过 队列结构 + 原子性 保证顺序。 启动的时候方法执行,__sa…
iOS 优化篇 - 启动优化之Clang插桩实现二进制重排
( 本篇文章由于会从原理角度讲解 , 有些已经比较熟悉的同学可能会觉得节奏偏啰嗦 , 为了照顾大部分同学 , 大家自行根据目录跳过即可 . ) 了解二进制重排之前 , 我们需要了解一些前导知识 , 以及二进制重排是为了解决什么问题 . 在本篇文章里 , 笔者就不通过教科书或者大…