MetricKit框架详细解析(二) —— Improving
版本记录
版本号 | 时间 |
---|---|
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 organizer
或MetricKit
中看到的某个指标的最大值表示该应用程序已按预期使用,则该值可能并不表示要解决的最重要问题。例如,与背景音频播放相关的电源使用对于播客播放器来说可能不是问题,用户希望在后台播放。但是,如果您的应用是一个没有后台玩法的游戏,那么看到该指标占主导地位将是令人惊讶的。
看到该指标在指标报告中占主导地位,可能表明可以实现效率节省,但最有影响力的变化可能是使用了辅助服务,而这些辅助服务并不影响应用程序的主要功能。播客播放器可能很少需要使用粗粒度定位服务向听众推荐本地兴趣播客,但是与频繁跟踪用户的精确位置相关的高能耗可能表明需要进行更改。
Profile Your App
使用Instruments来配置您的应用,选择与您正在考虑的metric
相关的配置文件模板:
- 无响应并挂起:使用Time Profiler模板。
- 内存问题:使用Allocations和Leaks模板。
- 功耗问题:使用Energy Log模板。
- I / O问题:使用File Activity模板。
- 与网络相关的问题:使用Network template。
通过在设备(而不是模拟器)上进行性能分析,可以获得更高保真度的测量结果。如果您收集的信息表明您的应用在特定类别或型号的设备上的性能不佳,请对该设备进行profile
。
查找导致性能问题的代码,并制定解决方案。请记住,您的更改可能未定位到特定的行或者函数,并且可能需要对应用程序进行重大的体系结构更改。例如,要减轻由于同步下载网络资源而导致的挂起,请引入后台操作来处理网络(请参阅Downloading Files in the Background),并在下载完成后在主线程上执行UI更新。
Make the Next Change
实施您根据调查计划的更改。 在Instruments
中创建一个''after''
配置文件,您可以将其与“before”
配置文件进行比较,以确保您的更改带来了改善。 考虑在XCTest中编写性能测试,以防止将来性能下降,并记录该问题存在并已得到解决。
Compare the Changed Behavior with Your Original Data
在更改您的应用程序以解决所观察到的最重要的性能问题之后,请确认该更改是否具有预期的效果,并且改善的水平足够。 在Xcode
的Metrics organizer
中使用每个应用版本的性能指标图,以查看更改是改善还是降低。
最后,确定您正在使用的指标仍然是最重要的,或者在性能改进周期的下一次迭代中数据是否指向另一个度量标准。
Additional Resources
这些文章,Xcode
帮助主题和WWDC会话视频包含有关使用Xcode
和Instruments
评估和改善应用程序性能的更多信息。
Performance Tools and Techniques
- Diagnose Performance Issues With the Xcode Organizer
- Eliminate Animation Hitches With XCTest
- Instruments Help
- Logging
- Performance on iOS and watchOS
- Practical Approaches to Great App Performance
- Profile your app's performance
- Visual Debugging with Xcode
- What's New in MetricKit
- Why is my App Getting Killed?
- Writing Performance Tests
Energy Consumption
- Achieving All-day Battery Life
- Debugging Energy Issues
- Energy Efficiency and the User Experience
- Energy Efficiency Guide for iOS Apps
- Energy Efficiency Guide for Mac Apps
- Identify Trends With the Power and Performance API
- Monitor a running app using debug gauges
- Monitor your app’s energy usage
- Profile your app's energy use
- What’s New in Energy Debugging
- Writing Energy Efficient Apps
- Xcode Energy Organizer
Topics
1. Memory
2. App Launch Time
3. Disk Writes
4. User Interface Hangs
后记
本篇主要讲述了
Improving Your App's Performance
,感兴趣的给个赞或者关注~~~