最终的分析优化的结不雅把时光大年夜90ms的数量级降低到了2ms的数量级,达到了一个比较流畅的效不雅。具体的分析优化步调请往下看。
【51CTO晃荡】8.26 带你与清华大年夜学、搜狗、京东大年夜咖们一路商量基于算法的IT运维实践
背景
前不久我做了一个富文本编辑对象,编辑器碰到了一个机能问题是添加多张图片,当滚动编辑区域,碰到图片切换的时刻会有明显的卡顿现象。这篇文┞仿基于这个卡顿的机能问题进行机能瓶颈的分析以及做对应的优化。
可以打开这个链接 iOS应用UITableView实现的富文本编辑器 查看我的文┞仿,这篇文┞仿所用的项目也是基于这个项目标。
既然问题是产生在图片切换的时刻,图片是放在零丁的一个Cell中的,那么就测验测验在Cell的衬着办法 cellForRowAtIndexPath 添加两个Log,查看办法履行所用的时光。
对应的结不雅:
- 2017-08-11 06:12:48.744 RichTextEditDemo[6867:1064632] ======begin render cell
- 2017-08-11 06:12:48.749 RichTextEditDemo[6867:1064632] ======end render cell
- 2017-08-11 06:12:49.261 RichTextEditDemo[6867:1064632] ======begin render cell
- 2017-08-11 06:12:49.266 RichTextEditDemo[6867:1064632] ======end render cell
大年夜日记打印的时光上看,大年夜概每衬着一个Cell只要发几毫秒的时光,貌似问题不会涌如今这个地位,然而这并不是本相,很明显的,其他处所不会影响到,所以得用更高等的分析对象去分析查看。
发明问题
Instrument是一个很好的机能分析对象,可以分析内存分派、内存泄漏、收集情况、CPU占用等和机能有关的问题,当前的机能问题是耗时的问题,可以应用 Instrument 的 Time Profiler 进行分析
让这个列表滚动,并且有进行图片Cell的切换
可以看到Time Profiler 有下面的记录,红色框中就是Cell切换所消费的时光值,这个时光的增长很明显的高于其他值了,所以这个就是我们要定位到的处所了。
Tips
- alt + 鼠标滚轮 -> 缩放时光轴
- shift + 鼠标滚轮 -> 移动时光轴
- 按注目标框选 -> 选择和定位时光轴
第一步要在时光轴上框选一个范围,标识选择这个范围进行分析,才能准肯定位到这个问题,如图(1)地位所示;第二步要选在客栈中的某一个函数,一般的选择到OC函数调用,更底层的函数调用就到了CF层是C说话实现的就不好分析了,所以这里选择的是 [UIImage drawInRect:blendMode:alpha] 这个函数分析,可以看到这个函数调用说花费的时光是 92ms,这是一个比较长的时光了,所以应当就是这里导致的卡顿了。
这个函数花费的时光和image图片的大年夜小有关系的,选择另一个时存放值范围,这个时存放值范围是产生在小图之间的切换的
结不雅
这个处所消费的时光就比较小一点,不过也是达到了25ms,对于机能也是有必定的影响的。
解决问题
以上的分析可以得出结论:[UIImage drawInRect:blendMode:alpha] 函数的调用是会导致机能问题的,因为UITextView内部处理图片的方法是经由过程调用 [UIImage drawInRect:blendMode:alpha] 函数绘制图片实现的。
既然是UITextView内部的处理方法,所以这个函数调用行动是应用层改变不了的,不过UIImage对象是我们可以控制的,或者可以改变图片的显示方法来达到优化的目标,所以就有了以下的两种筹划。
筹划1
第一种方檀卷是对预览的图片进行紧缩,然后再设置到NSTextAttachmen中,放到UITextView中显示
- textAttachment.image = self.image;
- // ===> 修改为
- // scaletoSize用于紧缩原始的图片,textAttachment中的image对象是紧缩过后的
- textAttachment.image = [self.image scaletoSize:showImageWidth];
推荐阅读
【51CTO晃荡】8.26 带你深度懂得清华大年夜学、搜狗基于算法的IT运维实践与摸索 本文介绍了一些可以用来监控收集应用情况的Linux敕令行对象。这些对象可以监控经由过程收集接口传输的数据>>>详细阅读
本文标题:IOS使用Instrument-Time Profiler工具分析和优化性能问题
地址:http://www.17bianji.com/lsqh/36827.html
1/2 1