准备
打开自己的xcode工程,打开Instrument工具
你就会看到有很多工具
工具.png
不过常用的一般就是Time Profiler,Leaks,Allocations
在我们调优的过程中注意:一定要使用真机,且是release发布版本,因为
1.模拟器是运行在mac上的和实际的运行在手机上的App环境不一样,相当于不是真实的环境。
2.且是release版本,因为发布环境打包,编译器会做了一些优化。如去看调试符号,优化重新组织代码及它会引用“watch dog”机制。
Time Profiler 时间分析器
用来检测应用程序中各个方法正在消耗CPU时间,用这个可以帮助我们了解程序中哪些是耗时方法!
点击record运行
因为xcode9.0后界面有点不同,9.0之前一些选项是在界面的一些右下角位置的,现在的话要点击CallTree才能弹出来。(这里我也是后来才发现的,嘻嘻~)
基本操作.png
几个选项的意思如下
Separate by State:按状态分开做分析;
Separate By Thread:线程分离,只有这样才能在调用路径中能够清晰看到占用CPU最大的线程.
Invert Call Tree:从上到下跟踪堆栈信息.这个选项可以快捷的看到方法调用路径最深方法占用CPU耗时,比如FuncA{FunB{FunC}},勾选后堆栈以C->B->A把调用层级最深的C显示最外面.
Hide System Libraries:这个就更有用了,勾选后耗时调用路径只会显示app耗时的代码,性能分析普遍我们都比较关系自己代码的耗时而不是系统的.基本是必选项.注意有些代码耗时也会纳入系统层级,可以进行勾选前后前后对执行路径进行比对会非常有用.
Flatten Recursion:拼合递归。把同一递归函数产生的多条堆栈合并为一条。
Top Functions:找到最耗时的函数或方法。
双击方法名,就会定位到具体的代码了
Leaks
检测内存泄漏问题
leaks.png
运行界面
383AE720-3CC2-462E-82BE-6BD324679053.png
可设置采样时间间隔.png
双击进入方法,看是否走dealloc方法来一步步调试。
Allocations
检测内存分配的工具,可查看哪些耗内存的方法
B24E072C-9733-4FDC-BD08-4CF880EE9A17.png
Core Animation
检测离屏渲染问题,我发现我的Xcode10.1 右下角没有Color Blended Layers 等的一些选项,原来Xcode换了位置。
在运行真机高度程序时,可以在功能栏里找到,如下。
414744B4-7FD0-4C6B-8123-29F86F413F46.png
选择不同的配置在手机上会显示
1A306522-2BA2-4302-8692-0BFDA8B16CAB.png
至于怎样离屏渲染的一些优化,这里推荐一个写得很好的文章 Instruments性能优化-Core Animation
总结
基本了解Instruments常用工具的使用
core animation可以调离屏渲染等
网友评论