iOS 开发高手课
戴铭
前滴滴出行技术专家
42934 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 47 讲
用户故事 (1讲)
iOS 开发高手课
15
15
1.0x
00:00/00:00
登录|注册

16 | 性能监控:衡量 App 质量的那把尺

os_signpost API
数据表配置
配置.instrpkg文件
选择Instruments Package
创建项目
自定义性能监测工具开发
支持所有平台
基于os_signpost 架构
Time Profiler
Network
Leaks
Energy Log
获取phys_footprint字段值
task_vm_info结构体
记录每次刷新时间
注册CADisplayLink
遍历线程获取CPU使用率
线程基本信息结构体
Analysis Core工作原理
自定义工具开发步骤
优势
功能
自定义Instruments工具监控数据
建议
线上性能监控方案
线下性能监控工具Instruments
内存使用量监控方法
FPS监控方法
CPU使用率监控方法
Instruments
课后小作业
总结
线上性能监控
线下性能监控
性能监控

该思维导图由 AI 生成,仅供参考

你好,我是戴铭。
通常情况下,App 的性能问题虽然不会导致 App 不可用,但依然会影响到用户体验。如果这个性能问题不断累积,达到临界点以后,问题就会爆发出来。这时,影响到的就不仅仅是用户了,还有负责 App 开发的你。
为了能够主动、高效地发现性能问题,避免 App 质量进入无人监管的失控状态,我们就需要对 App 的性能进行监控。目前,对 App 的性能监控,主要是从线下和线上两个维度展开。
今天这篇文章,我就从这两个方面来和你聊聊如何做性能监控这个话题。接下来,我们就先看看苹果官方的线下性能监控王牌 Instruments。

Instruments

关于线下性能监控,苹果公司官方就有一个性能监控工具 Instruments。它是一款被集成在 Xcode 里,专门用来在线下进行性能分析的工具。
Instruments 的功能非常强大,比如说 Energy Log 就是用来监控耗电量的,Leaks 就是专门用来监控内存泄露问题的,Network 就是用来专门检查网络情况的,Time Profiler 就是通过时间采样来分析页面卡顿问题的。
如下图所示,就是 Instruments 的各种性能检测工具。
图 1 Instruments 提供的各种性能检测工具
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了iOS App线上和线下性能监控的重要性,并详细介绍了苹果官方的线下性能监控工具Instruments。该工具集成在Xcode中,能够进行性能分析,监控耗电量、内存泄露、网络情况和页面卡顿等问题。最新版本的Instruments 10支持所有平台,并提供了自定义性能监测工具的开发功能。此外,文章还介绍了对CPU使用率、FPS帧率和内存的线上监控方法。通过遍历线程并累加cpu_usage字段,可以获取当前App所在进程的CPU使用率。对于内存使用量的监控,文章提到了phys_footprint字段的值,用于监控实际物理内存的使用情况。总的来说,本文强调了通过线下和线上监控来掌控App的性能,并建议开发者摸透苹果公司自己的库和工具,以提高开发效率。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《iOS 开发高手课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(18)

  • 最新
  • 精选
  • xilie
    要不还是介绍下第三方的监控平台,小公司,监控后台都没人做啊

    作者回复: 推荐的话,做的好的是蚂蚁的 mPaaS

    2019-05-29
    4
  • 小阳哥
    每2s去遍历线程 这个不会有问题吗?

    作者回复: 不会的

    2019-04-17
    2
    4
  • 小城
    内存线上监控,不是针对多个线程,而是直接从结构体里面取出phys_footprint就可以?

    作者回复: 是的

    2019-05-30
    1
  • 异界
    图片名字,使用中文,会影响性能吗(项目中90%以上使用的中文命名图片)?

    作者回复: 不会

    2019-05-05
    1
  • drunkenMouse
    CADisplayLink:与屏幕刷新频率的计时器同步,每次屏幕刷新都会调用一次,所以可以获取到一秒钟屏幕刷新的次数。 线下监控:Instrument,一个工具检测所有。 线上监控:CPU使用直接获取所有线程的cpu_usage计算综合,内存消耗使用task_basic_info的phys_footprint,FPS用CADisplayLink。
    2019-04-17
    20
  • 李二柱子
    对于性能的监控有没有衡量标准,如何衡量优劣?
    2019-04-17
    3
  • Onion
    监控起来如何分析,有实践方案嘛
    2019-04-16
    3
  • 一代真龙
    线上电量监控是监控不了的。现有的方案都是不可行的,没有参考价值。
    2019-04-18
    2
  • CoderY
    文中提到“集成多个公司 SDK 的情况,所以我们就需要以黑盒的方式来进行性能监控”,请问大佬这块具体怎么监控?
    2020-04-24
    1
  • 张玉棠
    time profile 工具再最新的xcode版本上收集不到数据,作者你有遇到过吗?
    2019-08-18
    1
收起评论
显示
设置
留言
18
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部