性能测试知多少-Instrument⼊门
Instruments是Apple官⽅提供的⼀个强⼤的内置在xcode中的性能调试⼯具集,如果你想⼀点点了解它有多强⼤,就和我⼀起⽇积⽉累吧。
Instrument介绍
Instruments是⼀个强⼤灵活的性能分析和测试⼯具,能够帮助你分析OS X和iOS上的应⽤程序及进程,以便于更好地了解和优化其性能,现在就开始唠叨唠叨。
Why:忙忙⼈海为什么选中了你
iOS本⾝可⽤的性能测试⼯具并不多,为什么选择instruments:
1、越狱设备可通过后台进程采集数据,但是新设备⽆法越狱
2、在APP中嵌⼊性能采集模块,但是第三⽅应⽤⽆法使⽤
故,选择Apple⾃⼰家的instruments
when:什么时候使⽤instruments
当你想要对APP性能进⾏调优测试,解决问题,分析cpu、内存、资源消耗等信息时,就可以使⽤instruments进⾏监控。
在使⽤instruments之前可以使⽤xcode参考调试导航栏中指标信息,如图所⽰:
但是xcode调试获取到数据信息同release版本可能并不⼀致,并不能够真实的表达线上版本APP相关的性能指标,因此若想获取更真实的数据、同时想获得更详细的信息时,就可以使⽤instruments。
What:Instruments能够为你做什么?
1、检查⼀个或多个应⽤、进程的运⾏情况
2、检查设备详细的配置,例如WiFi,蓝⽛
3、在模拟器或真机上执⾏概要分析
4、可以⾃动以的设置DTrace⼯具,⽤来分析系统和应⽤程序的运⾏情况
5、跟踪源代码中存在的问题
6、对应⽤进⾏性能分析
7、查应⽤中的内存问题,如内存泄漏等问题
8、确定优化应⽤程序的⽅法,从⽽提⾼性能
9、排除常规系统故障
10、可以将⼯具的配置作为模板保存起来
how:怎样使⽤Instruments?
举个栗⼦(timeprofiler)
Time Profiler⼯具对系统CPU上运⾏的进程执⾏低开销,基于时间的采样。通过该⼯具能够查看内核和进程的使⽤、性能存在的瓶颈。
使⽤⽅法:
1、打开跟踪模板profiling template,选择
2、选择指定的调试设备及⽬标应⽤,点
3、击record按钮,开始执⾏进⾏监控
4、在监控数据过程中,正常使⽤APP。
5、点击stop按钮,结束数据收集
6、分析收集到数据信息。使⽤CPU使⽤率视图来⽐较指定时间段内的内核的使⽤情况,查不平衡的内核使⽤情;使⽤线程策略视图来检查应⽤程序在执⾏⼯作时对线程的使⽤,主线程上的⼤量⼯作可能会使应⽤程序的⽤户界⾯⽆响应或速度变慢。
Instruments操作使⽤相关的知识,可以阅读官⽅⽂档,讲解真的超级详细
官⽅⽂档:
Instrument常⽤⼯具
下⾯简单介绍⼏个常⽤的监测⼯具,想了解更多⼤家可通过官⽅⽂档继续挖掘。
allocation
⽤于发现内存不合理引⽤,检测重复操作能否正常分配、释放内存,若内存不能正确释放,就会出现内存的持续增长。
leak
⽤于检测内存泄漏问题,但是leak可能有时不能准确的定位内存泄漏问题,建议使⽤allocation。
core animation graphics
⽤来检测帧频率,来测量iOS应⽤程序的gpu性能。
time profiler
检测内核使⽤情况
ps:
使⽤CPU使⽤率视图来⽐较指定时间段内的内核的使⽤情况,查不平衡的内核使⽤情;使⽤线程策略视图来检查应⽤程序在执⾏⼯作时对线程的使⽤,主线程上的⼤量⼯作可能会使应⽤程序的⽤户界⾯⽆响应或速度变慢。
energy log
能够监控设备电量的使⽤以及设备组件的开关状态,如cpu、gpu、⽹络、屏幕亮度、蓝⽛、GPS、WiFi
通过连接设备进⾏电量监控,这样做会导致获取的数据并不够真实,因此在真实的情况下更准确地对设备进⾏监控才是我们想要的。
xcode入门
在iOS设备上录电量使⽤情况⽅法
1、设置->开发者->logging->start recording,点击启动,则可以在使⽤设备时对电量消耗进⾏记录。
2、电量监控完毕后,点击stop recording,结束记录。注意:若数据监控过程中,⼿机电量耗尽或关机,则记录的⽇志数据将丢失,因此使⽤时需注意这⼀点。
3、连接设备,在instruments中导⼊跟踪数据,file->import logged data from device.
4、分析收集到的监控数据,⽅法同上。
通过命令⾏使⽤⼯具
命令如下:
instruments -t "Activity Monitor"-D ~/ace -w "{deviceid}" -l
50000/private/var/mobile/Containers/Bundle/Application/{deviceid}/Map.app/Map
-D⽣成trace⽂件的保存⽬录
-W设备id
-L设置监控时间,单位毫秒
application指定应⽤所在⽬录
其他参数设置,详见官⽅⽂档
注意事项:
1.最⼩化⼯具对数据收集的影响
instrument旨在最⼤限度地减少其对数据收集的影响。因此可以通过更改⼀些基本设置,减少instrument对数据收集的影响。
如减少⼯具的采样时间,以便于收集更多的数据。然⽽减少采样时间导致的⾼采样率可能导致⼏个问题:
1)每个样品都需要处理时间。⾼采样率就会使⽤更多的处理时间。
2)采样间隔时间可能不⼀致。每次启动样本会出现中断。所以当使⽤⾮常⼩的采样间隔时,这些中断发⽣时的变化可能导致采样率的显着变化。
3)⼩采样间隔导致采集更多样品。每个样本都使⽤系统内存,⼤量样本会快速占⽤内存使得机器剩余可⽤内存更少。
2.延迟模式运⾏instrument
当你退出正在测试的APP时再进⾏数据分析,能都提⾼性能相关数据的准确性。通常instruments在应⽤程序运⾏时分析和显⽰数据,允许你在
收集数据时查看数据。但是执⾏分析会占⽤CPU时间和内存导致⽬标进程效率降低,导致进程不能正常的进⾏。⽽以延迟模式运⾏就是在应⽤程序运⾏完毕后或单击停⽌后直到数据收集完成,再进⾏数据分析。
在延迟模式下,instruments完成数据采集后,instruments处理数据并在屏幕上显⽰。推迟数据分析会为数据收集过程的后期增加时间,但它有助于确保与性能相关的数据准确。
关于instruments性能测试的思考
通过对instrument的调研使⽤,发现instruments确实能够帮助我们进⾏性能调优,但是作为测试⼈员,我们更想通过采集的数据定位分析问题,instruments展⽰给我们的数据并不完全,如Activity Monitor只提供了CPU瞬时值,Network也只提供了总流量,它们均不提供采集样本值,想分析完整的
采集数据,肿么办!通过⾮官⽅API解析trace⽂件,获取想要的数据,也许就是我们后续要做的事情~
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论