/TraceUtility

Extract data from .trace documents generated by Instruments

Primary LanguageObjective-CMIT LicenseMIT

从 Instruments 中导出数据

forked from Qusic/TraceUtility

关于Block检测

尝试通过Time Profiler导出主线程的卡顿情况,基本原理是通过Samples, 其中记录了每一毫秒时的函数堆栈,然后我们就可以通过Samples数据,统计出主线程的函数耗时情况。

目前验证一下,基本上能够达到较为准确的检测结果,但是对于某些情况,还是有一定问题:

  1. Timer
  2. RunLoop的Observer

简单来说计时器或者可能重复执行多次的函数,会导致检测的异常。 比如一个计时器隔一段时间执行,而间隔时间内没有其他函数执行,导致我们认为这一整段时间都是一个函数在执行,错误地计算其耗时。暂时未解决该问题,之后考虑优化。

之前考虑过通过一个间隔来判断主线程是否是休眠后重启的, 但是后来考虑到还有其他情况导致主线程的等待 :

  1. 文件读写

所以为了这类数据的正确计算,又去除掉间隔检测休眠的逻辑。

一个卡顿检测的结果