跳到主要内容

Instruments 性能分析

问题

Instruments 有哪些常用工具?如何使用?

答案

常用 Instruments 工具

工具作用
Time ProfilerCPU 采样,定位耗时函数
Allocations内存分配追踪,Mark Generation 找泄漏
Leaks实时检测内存泄漏(循环引用)
Core Animation帧率检测、离屏渲染标记
Network网络请求追踪
Energy Log电量消耗分析

Time Profiler 使用要点

  1. Call Tree 设置:勾选 "Separate by Thread"、"Invert Call Tree"、"Hide System Libraries"
  2. 关注 Main Thread:主线程耗时 > 16ms 就会掉帧
  3. 看 Self Weight:函数自身耗时(不含子函数)

Allocations Mark Generation

步骤:
1. 打开 Allocations 工具
2. 操作到达某个页面
3. 点击 "Mark Generation"(标记当前内存快照)
4. 返回上一页面
5. 再次 "Mark Generation"
6. 如果 Generation 间有持续增长的对象 → 可能泄漏
更简单的方案

Xcode 自带 Memory Graph Debugger(调试栏摄像机图标旁边的三个圆圈按钮),可以直观看到对象引用关系,紫色感叹号标记疑似泄漏。


常见面试问题

Q1: Time Profiler 和 System Trace 的区别?

答案

  • Time Profiler:采样 CPU 调用栈,用于定位 CPU 密集型函数
  • System Trace:追踪线程调度、中断、系统调用,用于分析线程阻塞、锁等待等问题

Q2: Release 模式和 Debug 模式性能差异大吗?

答案:非常大。Release 开启编译器优化(-O),速度可能比 Debug 快 2-10 倍。必须用 Release 模式做性能测试。Instruments 默认以 Release 配置 Profile。

相关链接