iOS开发高手课
戴铭
前滴滴出行技术专家
立即订阅
11447 人已学习
课程目录
已完结 46 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 锚定一个点,然后在这个点上深耕
免费
基础篇 (20讲)
01 | 建立你自己的iOS开发知识体系
02 | App 启动速度怎么做优化与监控?
03 | Auto Layout 是怎么进行自动布局的,性能如何?
04 | 项目大了人员多了,架构怎么设计更合理?
05 | 链接器:符号是怎么绑定到地址上的?
06 | App 如何通过注入动态库的方式实现极速编译调试?
07 | Clang、Infer 和 OCLint ,我们应该使用谁来做静态分析?
08 | 如何利用 Clang 为 App 提质?
09 | 无侵入的埋点方案如何实现?
10 | 包大小:如何从资源和代码层面实现全方位瘦身?
11 | 热点问题答疑(一):基础模块问题答疑
12 | iOS 崩溃千奇百怪,如何全面监控?
13 | 如何利用 RunLoop 原理去监控卡顿?
14 | 临近 OOM,如何获取详细内存分配信息,分析内存问题?
15 | 日志监控:怎样获取 App 中的全量日志?
16 | 性能监控:衡量 App 质量的那把尺
17 | 远超你想象的多线程的那些坑
18 | 怎么减少 App 电量消耗?
19 | 热点问题答疑(二):基础模块问题答疑
20 | iOS开发的最佳学习路径是什么?
应用开发篇 (12讲)
21 | 除了 Cocoa,iOS还可以用哪些 GUI 框架开发?
22 | 细说 iOS 响应式框架变迁,哪些思想可以为我所用?
23 | 如何构造酷炫的物理效果和过场动画效果?
24 | A/B 测试:验证决策效果的利器
25 | 怎样构建底层的发布和订阅事件总线?
26 | 如何提高 JSON 解析的性能?
27 | 如何用 Flexbox 思路开发?跟自动布局比,Flexbox 好在哪?
28 | 怎么应对各种富文本表现需求?
29 | 如何在 iOS 中进行面向测试驱动开发和面向行为驱动开发?
30 | 如何制定一套适合自己团队的 iOS 编码规范?
31 | iOS 开发学习资料和书单推荐
32 | 热点问题答疑(三)
原理篇 (6讲)
33 | iOS 系统内核 XNU:App 如何加载?
34 | iOS 黑魔法 Runtime Method Swizzling 背后的原理
35 | libffi:动态调用和定义 C 函数
36 | iOS 是怎么管理内存的?
37 | 如何编写 Clang 插件?
38 | 热点问题答疑(四)
原生与前端共舞 (5讲)
39 | 打通前端与原生的桥梁:JavaScriptCore 能干哪些事情?
40 | React Native、Flutter 等,这些跨端方案怎么选?
41 | 原生布局转到前端布局,开发思路有哪些转变?
42 | iOS原生、大前端和Flutter分别是怎么渲染的?
43 | 剖析使 App 具有动态化和热更新能力的方案
用户故事 (1讲)
用户故事 | 我是如何学习这个专栏的?
结束语 (1讲)
结束语 | 慢几步,深几度
iOS开发高手课
登录|注册

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

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

Instruments

关于线下性能监控,苹果公司官方就有一个性能监控工具 Instruments。它是一款被集成在 Xcode 里,专门用来在线下进行性能分析的工具。
Instruments 的功能非常强大,比如说 Energy Log 就是用来监控耗电量的,Leaks 就是专门用来监控内存泄露问题的,Network 就是用来专门检查网络情况的,Time Profiler 就是通过时间采样来分析页面卡顿问题的。
如下图所示,就是 Instruments 的各种性能检测工具。
图 1 Instruments 提供的各种性能检测工具
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《iOS开发高手课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(16)

  • drunkenMouse
    CADisplayLink:与屏幕刷新频率的计时器同步,每次屏幕刷新都会调用一次,所以可以获取到一秒钟屏幕刷新的次数。
    线下监控:Instrument,一个工具检测所有。
    线上监控:CPU使用直接获取所有线程的cpu_usage计算综合,内存消耗使用task_basic_info的phys_footprint,FPS用CADisplayLink。
    2019-04-17
    6
  • 小阳哥
    每2s去遍历线程 这个不会有问题吗?

    作者回复: 不会的

    2019-04-17
    3
  • 一代真龙
    线上电量监控是监控不了的。现有的方案都是不可行的,没有参考价值。
    2019-04-18
    2
  • Onion
    监控起来如何分析,有实践方案嘛
    2019-04-16
    2
  • xilie
    要不还是介绍下第三方的监控平台,小公司,监控后台都没人做啊

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

    2019-05-29
    1
  • RiverLi
    对于性能的监控有没有衡量标准,如何衡量优劣?
    2019-04-17
    1
  • 张玉棠
    time profile 工具再最新的xcode版本上收集不到数据,作者你有遇到过吗?
    2019-08-18
  • Yestin Zhao🏀
    戴老师。cpu_usage是千分比吗?我打印的最高是1000
    (lldb) p threadBaseInfo->cpu_usage
    (integer_t) $10 = 965

    看原文解释 是百分比啊
    integer_t cpu_usage; /* scaled cpu usage percentage */
    2019-08-01
  • 小城
    内存线上监控,不是针对多个线程,而是直接从结构体里面取出phys_footprint就可以?

    作者回复: 是的

    2019-05-30
  • 毛成方
    threadBaseInfo = (thread_basic_info_data_t)threadInfo;
    xcode8.2 无法强制转换
    请问得更新xcode?
    2019-05-14
  • 月落泉
    mach_task_self()这个函数报错Implicit declaration of function 'mach_task_self' is invalid in C99,如何处理
    2019-05-08
    1
  • 异界
    图片名字,使用中文,会影响性能吗(项目中90%以上使用的中文命名图片)?

    作者回复: 不会

    2019-05-05
  • 有个问题,就是用instrument的leak功能的时候,app运行起来会比较卡。不知道自定义的instrument会不会也有这个问题。
    2019-04-24
  • Ant
    Xcode 还有这么牛的功能
    2019-04-17
  • 国朋
    老哥,询问个问题,APP第一次安装,安装后会提示网络权限,提示权限时APP有什么活动吗,触发网络访问的代码后面的程序是出于等待状态,还是已经执行了呢
    2019-04-17
  • drq
    app耗电量怎么监控呢
    2019-04-16
收起评论
16
返回
顶部