性能优化
文章平均质量分 73
程序员的修养
好好学习
展开
-
优化之app lanch
一、启动app lanch启动app lacnch的方式如下选择Xcode->open develop Tools->instruments选中app lanch可以点击app lanch面板的左上角的红色开始按钮,启动app启动分析之旅,也可以使用command+r,快速启动二、分析1、主线程使用情况点击app icon下面的Process右下角的箭头,app当前运行的线程都会展示出来。找到主线程 Main Thread将鼠标停留在Main Thread左边,出现加号,原创 2021-10-15 09:30:48 · 5467 阅读 · 0 评论 -
dyld2 & dyld3
dyld2 & dyld3观看https://developer.apple.com/videos/play/wwdc2017/413/ 记录在 iOS 13 之前,所有的第三方 App 都是通过 dyld 2 来启动 App 的,主要过程如下:解析 Mach-O 的 Header 和 Load Commands,找到其依赖的库,并递归找到所有依赖的库加载 Mach-O 文件进行符号查找绑定和变基运行初始化程序上面的所有过程都发生在 App 启动时,包含了大量的计算和I/O,原创 2021-05-31 09:14:36 · 855 阅读 · 1 评论 -
启动过程之pre-main阶段及启动优化
启动过程iOS app的启动,也就是从exit()到main()过程,想了解从exit()到main()过程具体过程,需要先明白下面的概念,这些有助于我们理解从exit()到main()过程,本文章分为三部分一、 概念动态PIC动态PIC位于独立的代码中,这意味着该代码可以动态的加载到某个地址中,也就是指令是间接寻址的。如果一个指令需要调用另一个指令,co-gen在DATA段中创建了一个指针,该指针指向要调用的对象。;代码加载该指针并跳转到该指针。虚拟内存内存有限,进程较多时,只能加载几个进程原创 2021-05-24 09:33:06 · 315 阅读 · 0 评论 -
iOS 懒加载符号的绑定流程
懒加载符号的绑定流程一、测试资料及步骤首先看一下我们使用的测试代码以及debug方式1、测试代码如下int main(int argc,char *argv[]){ NSLog(@"--"); NSLog(@"--");}2、开启debug模式在源码NSLog上添加断点, 然后勾选xcode菜单Debug->Workflow->Always Show Disassembly, 这样就可以逐步调试汇编代码. 在lldb上输入si就可以按照指令逐步调试.二、Mach-O文件原创 2021-05-20 18:56:13 · 605 阅读 · 0 评论 -
MachO文件研究
MachO文件MachO文件是一种文件格式,是iOS或者OSX系统的可执行文件的格式,我们常见的Mach-O的文件如下Mach-O Object目标文件:.oMach-O dynamically库文件:.a、.dylib、frameworkMach-O ececutable可执行文件Mach-O dynamic linker动态链接器文件mach-O dSYM companion符号表文件:.dsymMach-O文件结构包含了Mach header 、load Command以及数据部分原创 2021-04-08 11:00:09 · 1135 阅读 · 2 评论 -
Runloop监控卡顿
Runloop监控卡顿主线程主要用来处理UI绘制、更新以及与用户的交互事件,如果任务占用主线程,用户会感觉到界面卡顿或者app没反应。思路:线程的消息事件依赖于NSRunloop,它们关系如下线程与RunLoop是一一对应的,并通过全局的字典保存对应关系线程如果没有开启RunLoop, 任务执行完就会结束线程销毁了,RunLoop也会在线程结束时停止运行所以监听主线程的卡顿可以转换为监听NSRunloop的状态,runloop的状态有六个,分别是typedef CF_OPTIONS(CFO原创 2021-05-13 09:30:01 · 879 阅读 · 0 评论 -
Python安装
Python安装Mac 系统自带python,但是实际开发使用其他版本的python,所以使用pyenv切换,pyenv是Python 版本管理工具,它可以完成以下任务改变全局的 Python 版本安装多个版本的 Python设置目录级别的 Python 版本创建和管理 Python虚拟环境1、安装Homebrew2、使用homebrew安装pyenvbrew update //也可以不执行,在安装pyenv时,brew会自动更新brew install pyenv原创 2021-05-10 13:59:55 · 117 阅读 · 0 评论 -
质量服务类QoS
质量服务类QoS允许我们对安排在NSOperation、NSOperationQueue、NSThread对象、分发队列(dispatch queue)或线程上的任务进行分类,通过分配QoS指定该任务的重要性,系统会通过优先级进行调度。iOS 8之后才可以使用QoS选择QoS类因为系统利用QoS来调整调度、CPU以及I/O的优先级,通过这种机制使任务执行时在性能和能效上保持平衡。在选择QoS时需要考虑任务的可见性、重要性,主要有以下四个QoS类Qos类任务类型以及Qos的重点工作时原创 2021-05-11 09:57:20 · 683 阅读 · 0 评论