使用“Time Profiler”工具监控App的启动耗时

一、如何查看耗时情况
1、查看Pre-Main()的耗时

  • 直接打开Xcode,找到Product->Scheme->Edit Scheme->Run->Arguments->Environment Variables->DYLD_PRINT_STATISTICS 设置为 YES
  • 通过快捷键:com + shift +
使用“Time Profiler”工具监控App的启动耗时_第1张图片
查看Pre-Mian()耗时

运行查看,你就能看到pre-Main()的耗时日志

使用“Time Profiler”工具监控App的启动耗时_第2张图片
耗时日志

2、查看Main()函数后的耗时
查看Main函数之后的耗时,目前有两种方案:

  • 方案一:定时抓取主线程方法的调用堆栈,计算一段时间里的方法耗时。(Xcode中的Time Profiler就是使用的这种的方法)
  • 方案二:对objc_msgSend方法进行hook,来得到所有方法的耗时。

使用方案一的TimeProfiler查看Main函数后耗时,方法如图:

使用“Time Profiler”工具监控App的启动耗时_第3张图片
步骤1
使用“Time Profiler”工具监控App的启动耗时_第4张图片
步骤2
使用“Time Profiler”工具监控App的启动耗时_第5张图片
步骤3
使用“Time Profiler”工具监控App的启动耗时_第6张图片
步骤4

注:
1 . Separate by State:按状态分开,分析数据。
2 . Separate by Thread:按线程分开,分析数据。可找出严重消耗资源的线程,特别对于处理和渲染UI的主线程,一旦主线程受到阻塞,一定会造成App的卡顿。
3 . Invert Call Tree:反向显示调用树。把调用层级最深的方法显示在最上面。
4 . Hide System Libraries:隐藏系统级的干扰信息。
5 . Flatten Recursion:合并递归。
6 . Top Functions:置顶耗时方法。

使用“Time Profiler”工具监控App的启动耗时_第7张图片
步骤5

注:
1、选择耗时的方法
2、点击右键
3、选择Reveal in Xcode
4、找到对应比较耗时的类中,进行对应维护。

相关文案:
https://mp.weixin.qq.com/s/WPsBfkroAEFVHu2OJ5pwKg?scene=25#wechat_redirect

你可能感兴趣的:(使用“Time Profiler”工具监控App的启动耗时)