实战使用Instruments - Time Profiler 对App进行优化

最近收到反馈——IM模块语音按钮点击不灵敏,反应慢,有时点了没反应。

初看“有时点了没反应”以为是语音按钮太小没点到,毕竟iPhoneX导航栏返回按钮也曾被反馈过难按,原因是 一样大小的返回按钮在刘海屏上变得难触。

照这思路调了一下按钮大小然后进行测试

(这怎么可能没点到)特意和WX的语音按钮对比了一下大小。

在真机上测试一遍。

如图,在跳转到聊天控制器后,已经第一时间仅一次按住按钮(未松手),但是还是过了一段时间才加载出来。

得出结论:用户点击语音按钮后,未等到加载出来就松手,造成点击不到的假象。实际上是加载慢。

这就涉及到优化问题了。之前听过杜优秀介绍过一款传说中的时间分析神器,一直没用过。是时候请上今天的主角——Time Profiler。

PS:还有个项目配置,不配置看上去有一些地方显示一坨十六进制码,原理和bugly一样。更多请查看https://www.jianshu.com/p/0fd670547235 测试过不配置好像没太大问题。 配置好后按以下流程走 0⃣️先将程序运行在设备上。 1⃣️在图中1处选好设备和程序。 2⃣️在图中2处勾选上Hide System Libraries,顾名思义隐藏系统函数,减少干扰。 3⃣️点击图中3处录制按钮,此时设备将会重新开始运行程序(不进行编译过程)。 4⃣️在设备上操作App。 5⃣️点击图中3处录制按钮停止监测。

开始测试!

其实在文头动图中除了语音呼出慢,还注意到点击联系人后跳转到聊天控制器(ChatViewController)也很慢(简书上的gif加快播放速率了,实际很慢),看看能不能顺手解决。

在图中可以看出该控制器viewDidLoad居然用了2.14s,难怪跳转这么慢。

展开后发现罪魁祸首setupFaceView占用了2.05s。 这个方法作用——配置表情的view,其中有许多页表情?。想来里面肯定用了重用机制,也是在异步线程中执行,除此我想不到别的优化方法。看来只能骗一骗用户。 理性分析一波,因为用户进入该界面通常并不会马上点击表情列表,而且该view运用懒加载,所以把该方法放到viewDidAppear里,不会重复创建对象,同时加快主界面的显示,这是惯用的小伎俩了。

修改后再次测试发现跳转速度贼快(图见文尾)。

再回到语音呼出慢这个问题。 这个有点棘手,在模拟器上运行呼出很快,但是真机上却龟速。 一开始误以为原因是模拟器的跟真机的配置不完全相同(虽然配置不同这件事是真的),但结果并不是因为配置原因。

观察右边Main Thread,发现呼出两次,主线程时间并未增加多少。再观察下方时间有变动的方法有两个。 1⃣️-[UIButton(SDAutoLayoutButton) sd_button_layoutSubviews] 2⃣️-[UUProgressHUD startAnimation]

两个方法分别是button和label适应,总体也没占多少时间,即关键不在这上面。但为什么这么慢呢?

仔细观察发现,手指按住按钮后过了一段时间,时间分析器才开始增加时间。

最终发现原因是按钮延时响应。 参考文章https://www.jianshu.com/p/ac821fb9b3d0 参考文章https://www.jianshu.com/p/93b08b97968b

照第一篇文章的方法解决了该问题。 最终修改成效,与文章开头的动图一样的操作。

以上感叹一句,Time Profiler真是一款好工具。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值