01-iOS 性能优化|性能调试工具Instrument简单介绍

5,883 阅读5分钟

前言

在项目中,直接面向用户的客户端往往是一个项目的门面。因此,在项目开发建设的过程中,为了交付用户体验较佳的客户端App,保障产品交付质量。往往需要我们开发者关注客户端软件的性能指标问题。因此,我们要对应用的性能优化专题有所研究!!
我们通常关注的性能指标有:

  • 页面卡顿
  • 耗电、发热
  • 网络优化
  • 应用启动
  • 安装包瘦身

我们在开发建设项目过程中,可以粗略划分为几个阶段:开发阶段测试阶段维护阶段:

  • 开发阶段,我们要掌握性能调试性能监测的手段,从而保障,在当前稳定版本的客户端软件,有一个比较合理的性能保障;
  • 测试阶段,测试团队等若干同事往往会给我们提出一些用户体验上的反馈和建议,因此,我们需要掌握性能调试的手段,从而改造出比较符合团队要求的产品;
  • 在上线维护阶段,针对已经上线的应用,我们的开发团队要有线上性能监控的能力,从而及时收集不满足性能指标要求的业务交互场景和步骤,捕获具体问题进行分析,从而以此为依据作为有效迭代优化我们客户端的有力助力。

为此,我们本次将会用几篇文章,围绕一些常见的性能指标,去关注 如何调试、如何监测、如何改进处理问题:

概述

本文主要是针对 开发阶段测试阶段 这两个线下场景,围绕一些常规的性能问题,展开来陈述对应的 性能调试工具的。关于相关的同一主题的要点,我们会在其它文章,用心的篇幅进行讨论。

一、性能调试工具Instrument

Instrument是 苹果官方IDE Xcode 自带的 调试工具,有若干调试功能(见文章第二节)。,我们可以从Xcode的入口访问:Xcode->Open Developer Tool->Instrument
我们也可以通过官方网文档 对其有更详实的了解:developer.apple.com/videos/play…

二、Instrument

本图来自 Xcode 13.3.1 image.png

  • Blank:空白,可以使用库中的工具定制的空白跟踪文档
  • Activity Monitor:活动监视器,监视进程和系统的CPU、内存、磁盘和净工作使用量统计数据
  • Allocations:内存分配,跟踪进程的匿名虚拟内存和堆,为对象提供类名和可选的保留/释放历史
  • Animation Hitches:动画监视,此模板通过时间分析来度量应用程序图形性能以及进程的CPU使用情况
  • App Launch:启动问题,可以用于查看App的启动过程,从而可以针对性的对启动速度进行优化
  • Core Data:核心数据,此模板跟踪核心数据文件系统活动,包括获取、缓存失败和保存
  • Counters:计数器,使用时间或基于事件的采样方法收集性能监视器计数器(PMC)事件
  • `Energy Log:能源的日志,此模板提供有关能源使用的诊断信息以及主要设备组件的基本开/关状态
  • File Activity:文件活动,此模板监视文件和目录活动,包括文件打开/关闭调用、文件权限修改、目录创建、文件移动等。
  • Game Performance:(尚未研究)
  • Leaks:泄漏,度量一般内存使用情况,检查泄漏内存,并根据类提供对象分配的统计信息,以及所有活动分配和泄漏块的内存地址历史记录。
  • Logging:(尚未研究)
  • Metal System Trace:金属系统跟踪,Metal System Trace通过提供来自应用程序、驱动程序和GPU层的跟踪信息,介绍了iOS、tvOS和macOS Metal应用程序的性能
  • Network:网络,使用连接工具分析应用程序如何使用TCP/IP和UDP/IP连接
  • SceneKit:概述应用程序对SceneKit的使用。确定进入每个帧的工作类型,例如动画、物理、场景选择和渲染。
  • SwiftUI:(尚未研究)
  • System Trace:系统跟踪,操作系统中发生的事情的一个全面的观点。了解如何跨cpu调度线程,了解系统调用和虚拟内存错误如何影响应用程序的性能。
  • Time Profiler:时间分析器,对运行在系统cpu上的进程执行基于低开销时间的采样。
  • Zombies:僵尸,在检测过度释放的“僵尸”对象的同时,测量一般的内存使用情况。还根据类提供对象分配的统计信息,以及所有活动分配的内存地址历史记录。

总结

本文 简单介绍了 项目 开发的几个阶段,会用到的 性能关注 手段问题,但本文仅仅针对 线下开发、线下测试阶段 能用到的 性能调试工具 Instrument 做了简单介绍 。
接下来会用几篇文章,围绕几个常见的性能问题,展开对 性能调试工具 Instrument 的 基本使用介绍。

相关系列文章

Instruments