注意手机上要有运行过的app:
1、我们要先 command + shift +k ,clean下
2、运行下app,command + r
3、Xcode–> Product–> Profile (command + i 快捷键)调出instrument,选择Time Profiler,我们可以跟踪哪个方法最耗时间,以此来优化

instruments 中 Time Profiler的使用说明

然后可以看到如下
instruments 中 Time Profiler的使用说明

点击左边红色的圆点,开始录制,我们就能看到方法执行所需要的时间
instruments 中 Time Profiler的使用说明

我们可以看到[GBLoopView animateCurrentTickerString];这个方法最耗时间。我们点击有个向右的箭头,看下该方法
instruments 中 Time Profiler的使用说明

GBLoopView是干嘛的呢,是在项目首页有个广播的跑马灯,之前的代码是在viewwilldisapper中将该广播暂停,自己猜测,难道是即使暂停了,里面还有些动画还在执行?于是在animateCurrentTickerString中打断点,果然即使已经push到其他页面,该方法在不断的循环调用,之前有个字断是running 用来记录当前状态的,在主页viewwilldisapper中将其暂停running=NO,在animateCurrentTickerString添加个判断,这样即使push到其他页面,该方法也不会一直在调用了。但是我比较好奇的是即使我在主页将该GBLoopView 暂停并且移除掉,该动画还是一值在执行,不知道该原因是什么~~

看下修改完之后的cpu的占用率

instruments 中 Time Profiler的使用说明

我的这个最耗时的已经修改好了,当然还有其他可以优化的。

注意:我们看下有下角的☑️选项,对于我们很有帮组

Separate by Thread:按线程分开做分析,这样更容易揪出那些吃资源的问题线程。特别是对于主线程,它要处理和渲染所有的接口数据,一旦受到阻塞,程序必然卡顿或停止响应。
Invert Call Tree:反向输出调用树。把调用层级最深的方法显示在最上面,更容易找到最耗时的操作。
Hide System Libraries:隐藏系统库文件。过滤掉各种系统调用,只显示自己的代码调用。
Flattern Recursion:拼合递归。将同一递归函数产生的多条堆栈(因为递归函数会调用自己)合并为一条。
Top Functions:找到最耗时的函数或方法。

相关文章:

  • 2022-12-23
  • 2022-02-18
  • 2021-06-20
  • 2021-11-04
  • 2021-12-14
  • 2021-12-12
  • 2021-11-20
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-23
  • 2021-11-29
  • 2022-12-23
相关资源
相似解决方案