MetricKit框架详细解析(二) —— Improving Your App's Performance(一)

版本记录

版本号 时间
V1.0 2021.05.12 星期三

前言

MetricKit由iOS13系统进引入,用来汇总和分析有关异常和崩溃诊断以及电源和性能指标的每个设备的报告。下面我们就一起来看下这个框架。感兴趣的可以看下面几篇文章。
1. MetricKit框架详细解析(一) —— 基本概览(一)

Overview

客户期望应用程序运行良好。 启动时间过长或输入响应缓慢的应用可能会向用户显示好像它无法正常工作或呆滞。 发出大量大型网络请求的应用可能会增加用户的数据费用并耗尽设备电池的电量。 这些行为中的任何一种都会使用户感到沮丧,并导致他们卸载应用程序。

通过科学地解决问题来计划和实施性能改进:

  • 1) 收集有关用户看到的问题的信息。
  • 2) 评估您的应用行为,以找出问题的原因。
  • 3) 计划一项更改以改善这种情况。
  • 4) 实施更改。
  • 5) 观察应用程序的性能是否提高。

这些活动形成了一个持续改进的循环,如下图所示。

最大限度地减少资源使用使用户受益,并改善他们对您的应用程序的认知。这里有一些特殊的好处:

  • 减少应用启动时间可改善用户体验,并减少iOS看门狗定时器终止应用的机会。
  • 减少整体内存使用量可以减少iOS在后台释放应用程序内存的可能性,并在用户切换回您的应用程序时提高响应速度。
  • 减少磁盘写入可提高应用程序的整体性能,使其响应速度更快,并减少用户设备存储的磨损。
  • 降低挂起率和挂起持续时间可以提高用户对应用程序性能和响应速度的认识。
  • 减少电池消耗和使用耗电设备功能可以使您的应用程序更可靠,并有助于确保在需要时可以使用其余用户设备。

即使您的测量和观察结果显示没有紧迫的性能问题,还是建议您执行性能改进周期并进行预防性工作,以防止应用性能下降。


Gather Data About Your App's Current Performance

要全面了解您的应用的性能,请结合以下多种来源的信息:

  • 使用Xcode Organizer可以查看有关启动时间,用户界面响应性,对存储的写入,内存使用和能耗的度量,以及针对磁盘写入,崩溃和能耗的诊断报告。利用Organizer,您可以按设备型号,应用程序版本和用户百分位数细分度量。有关更多信息,请参阅 Analyzing the Performance of Your Shipping App
  • 使用MetricKit收集指标并将其记录在您自己的工具中。这些指标采用直方图的形式,记录了一天中观察到的值的频率。 MetricKit超越了Metrics organizer中显示的度量标准,还包括平均像素亮度,蜂窝网络状况以及与应用程序中的自定义OSSignpost事件相关联的持续时间。
  • TestFlight测试人员那里获取有关他们使用您的应用Beta版的体验的反馈。填写您的Beta版本的Test Information页面,并要求测试人员提供有关您应用性能的反馈。包括电子邮件地址,以便测试人员可以报告他们的发现。
  • 调查您的用户对他们使用您的应用的released版本的体验的反馈。邀请用户通过电子邮件或应用内的专用界面发送反馈。向他们询问他们使用该应用程序的体验-哪种方法有效,以及遇到的任何问题。

Determine the Most Important Aspect to Improve

利用从观察中获得的信息以及对应用程序目的和预期使用模式的理解,发现最大的改进机会。某些性能问题与所调查的应用程序类型无关。启动时间长或对用户操纵界面的尝试无响应的应用程序会导致用户感到他们无法控制该应用程序。

另一方面,如果您在Metrics organizerMetricKit中看到的某个指标的最大值表示该应用程序已按预期使用,则该值可能并不表示要解决的最重要问题。例如,与背景音频播放相关的电源使用对于播客播放器来说可能不是问题,用户希望在后台播放。但是,如果您的应用是一个没有后台玩法的游戏,那么看到该指标占主导地位将是令人惊讶的。

看到该指标在指标报告中占主导地位,可能表明可以实现效率节省,但最有影响力的变化可能是使用了辅助服务,而这些辅助服务并不影响应用程序的主要功能。播客播放器可能很少需要使用粗粒度定位服务向听众推荐本地兴趣播客,但是与频繁跟踪用户的精确位置相关的高能耗可能表明需要进行更改。


Profile Your App

使用Instruments来配置您的应用,选择与您正在考虑的metric相关的配置文件模板:

通过在设备(而不是模拟器)上进行性能分析,可以获得更高保真度的测量结果。如果您收集的信息表明您的应用在特定类别或型号的设备上的性能不佳,请对该设备进行profile

查找导致性能问题的代码,并制定解决方案。请记住,您的更改可能未定位到特定的行或者函数,并且可能需要对应用程序进行重大的体系结构更改。例如,要减轻由于同步下载网络资源而导致的挂起,请引入后台操作来处理网络(请参阅Downloading Files in the Background),并在下载完成后在主线程上执行UI更新。


Make the Next Change

实施您根据调查计划的更改。 在Instruments中创建一个''after''配置文件,您可以将其与“before”配置文件进行比较,以确保您的更改带来了改善。 考虑在XCTest中编写性能测试,以防止将来性能下降,并记录该问题存在并已得到解决。


Compare the Changed Behavior with Your Original Data

在更改您的应用程序以解决所观察到的最重要的性能问题之后,请确认该更改是否具有预期的效果,并且改善的水平足够。 在XcodeMetrics organizer中使用每个应用版本的性能指标图,以查看更改是改善还是降低。

最后,确定您正在使用的指标仍然是最重要的,或者在性能改进周期的下一次迭代中数据是否指向另一个度量标准。


Additional Resources

这些文章,Xcode帮助主题和WWDC会话视频包含有关使用XcodeInstruments评估和改善应用程序性能的更多信息。


Performance Tools and Techniques


Energy Consumption


Topics

1. Memory

2. App Launch Time

3. Disk Writes

4. User Interface Hangs

后记

本篇主要讲述了Improving Your App's Performance,感兴趣的给个赞或者关注~~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容