美文网首页
iOS 底层原理39:Instruments系列(四)App L

iOS 底层原理39:Instruments系列(四)App L

作者: Style_月月 | 来源:发表于2022-08-30 12:48 被阅读0次

iOS 底层原理 文章汇总

App Launch 是XCode 11 以后提供的检测工具, 主要是用来查看App启动过程,然后针对耗时操作进行优化,进而对启动速度进行优化。

使用

  • 打开Instruments - App Launch


    Instruments_04_01.png
  • 选择App,然后点击录制,结束录制后会有一个分析展示


    Instruments_04_02.png
    Instruments_04_03.png

xcode13系统默认录制20s,可以长按录制按钮选择Recording Options更改录制时间

  • 选中 App,右侧会将启动过程划分为几个阶段,并分别显示各阶段的耗时情况。(ps:右侧可以通过CMD + +细化时间进行查看)
    Instruments_04_04.png

注:下面是各个阶段的介绍

  • 进程创建(Initializing) - 紫色
  • 系统初始化(Initializing - System Interface Initialization)- 紫色
  • 静态运行时的初始化(Initializing - Static Runtime Initialization)
  • UIKit初始化(Launching - UIKit Initialization)- 浅绿色
  • 启动(Launching - didFinishLaunchingWithOptions())- 深绿色
  • 第一帧渲染(Launching - Initial Frame Rendering)- 浅绿色
  • 前台运行(Forground - Active)
  • 下方显示了整个过程的详细信息,可以切换不同的角度查看


    Instruments_04_05.png
  • Event:Context Switch Point (查看整个启动过程中上下文切换的位置)
    Instruments_04_08.png
  • Profile(显示整个启动过程中的方法调用栈及方法耗时)
    Instruments_04_09.png
  • App Life Cycle (启动过程中的各个阶段的耗时 - 生命周期)
    Instruments_04_07.png
  • Sample(各个Cpu显示线程信息 状态 回溯)
    Instruments_04_10.png
  • 一般来说,系统初始化阶段和UIKit初始化阶段优化空间较小,毕竟是系统的相关方法。所以我们重点关注在启动和第一帧渲染的阶段。可以通过三击某个阶段,来查看某个阶段的信息,例如,三击launching阶段,选择下方的profile,就可以只查看 Launching 阶段所有方法的调用和耗时情况了。然后找出耗时较长的方法进行相应优化即可。


    Instruments_04_06.png
  • 除此之外,还可以查看在启动过程中的所有线程情况,选中App,然后点击左侧箭头,会展开显示启动过程中App的所有线程,点击线程的展开符号可以选择显示线程的状态。


    Instruments_04_11.png

注:线程的状态会通过右侧颜色进行标注


Instruments_04_12.png
  • 灰色(Blocked):当前线程被阻塞
  • 红色(Runnable):当前线程可以运行,即有了CPU资源就可以立即运行
  • 橙色(Preempted、Interrupted):线程被中断,CPU去执行其他优先级更高的线程
  • 蓝色(Running):线程正在执行

参考文章

# Optimizing App Launch
# Instruments App Launch 启动时间查看
# 使用Instruments - App Launch查看启动问题

相关文章

网友评论

      本文标题:iOS 底层原理39:Instruments系列(四)App L

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