Time Profiler(时间分析器)--初识篇

来源:互联网 发布:学打五笔用什么软件 编辑:程序博客网 时间:2024/06/05 18:05

Time Profiler原理

Time Profiler instrument工具按照固定的时间间隔来跟踪每一个线程的堆栈信息,通过统计比较时间间隔之间的堆栈状态,来推算某个方法执行了多久,并获得一个近似值。

面板各部分介绍

  1. 打开Time Profiler
    这里写图片描述
  2. 打开后空白界面如下:
    这里写图片描述
    • 1:录制按钮。点击后,time profiler将自动启动待测Demo,开始录制。
    • 2:执行计时器。记录了当前测试共执行了多长时间,以及共执行了多少次测试。(开始记录后,点击录制按钮,结束测试。再次点击录制按钮,开始新的一次测试,前一次测试结果显示在下方,这时执行计时器显示为 Run 2 of 2)
      这里写图片描述
    • 3:路径(track)。录制出的图像类似下图:
      这里写图片描述
    • 4:详情面板。在这里可以找到耗时最长的方法。
    • 5:选项面板。
      • Separate by State:通过状态分类来查看哪些方法耗时最多。
      • Separate by Thread:通过线程分类来查看哪些方法耗时最多。
      • Invert Call Tree:调用树倒返过来,将习惯性的从根向下一级一级的显示,如选上就会返过来从最底层调用向上一级一级的显示。如果想要查看那个方法调用为最深时使用会更方便些。
      • Hide System Libraries:选上它只会展示与应用有关的符号信息,一般情况下我们只关心自己写的代码所需的耗时,而不关心系统库的CPU耗时。
      • Flatten Recursion:选上它会将调用栈里递归函数作为一个入口。
      • Top Functions:选上它会将最耗时的函数降序排列,而这种耗时是累加的,比如A调用了B,那么A的耗时数是会包含B的耗时数。

测试注意点

  1. 使用真机进行测试。
    • 在开始进行应用程序性能分析的时候,一定要使用真机,不能使用运行在Mac上的模拟器。因为Mac上的CPU往往比iOS设备要快,并且Mac上的GPU和iOS设备的完全不一样,模拟器不得已要在软件层面(CPU)模拟设备的GPU,这意味着GPU相关的操作在模拟器上运行的更慢,尤其是使用CAEAGLLayer来写一些OpenGL的代码时候. 这就导致模拟器性能数据和用户真机使用性能数据相去甚远。
  2. Demo运行一定要是生产配置。
    • 在发布环境打包的时候,编译器会引入一系列提高性能的优化,例如去掉调试符号或者移除并重新组织代码.另iOS引入一种”Watch Dog”[看门狗]机制.不同的场景下,“看门狗”会监测应用的性能。如果超出了该场景所规定的运行时间,“看门狗”就会强制终结这个应用的进程。开发者可以crashlog看到对应的日志.但Xcode在调试配置下会禁用”Watch Dog”。

相关文档

  1. 官方文档:https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/
  2. 中文翻译:可百度搜索“Instrument 用户指南”