instrument的使用(iOS使用Instruments分析和优化CPU性能问题)

:暂无数据 2026-07-09 04:20:09 :0

instrument的使用(iOS使用Instruments分析和优化CPU性能问题)

其实instrument的使用的问题并不复杂,但是又很多的朋友都不太了解iOS使用Instruments分析和优化CPU性能问题,因此呢,今天小编就来为大家分享instrument的使用的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

本文目录

iOS使用Instruments分析和优化CPU性能问题

背景

前不久我做了一个富文本工具,器遇到了一个性能问题是添加多张图片,当滚动区域,遇到图片切换的时候会有明显的卡顿现象。这篇文章基于这个卡顿的性能问题进行性能瓶颈的分析以及做对应的优化。

可以打开这个链接  iOS使用UITableView实现的富文本器  查看我的文章,这篇文章所用的项目也是基于这个项目的。

结果

最终的分析优化的结果把时间从90ms的数量级降低到了2ms的数量级,达到了一个比较流畅的效果。具体的分析优化步骤请往下看。

问题分析

既然问题是发生在图片切换的时候,图片是放在单独的一个Cell中的,那么就尝试在Cell的渲染方法 cellForRowAtIndexPath 添加两个Log,查看方法执行所用的时间。

对应的结果:

从日志打印的时间上看,大概每渲染一个Cell只要发几毫秒的时间,貌似问题不会出现在这个位置,然而这并不是真相,很明显的,其他地方不会影响到,所以得用更高级的分析工具去分析查看。

发现问题

Instrument是一个很好的性能分析工具,可以分析内存分配、内存泄漏、网络情况、CPU占用等和性能有关的问题,当前的性能问题是耗时的问题,可以使用 Instrument 的 Time Profiler 进行分析

让这个列表滚动,并且有进行图片Cell的切换

可以看到Time Profiler 有下面的记录,红色框中就是Cell切换所耗费的时间值,这个时间的增长很明显的高于其他值了,所以这个就是我们要定位到的地方了。

Tips

alt + 鼠标滚轮 -》 缩放时间轴

shift + 鼠标滚轮 -》 移动时间轴

按住鼠标框选 -》 选择和定位时间轴

第一步要在时间轴上框选一个范围,标识选择这个范围进行分析,才能准确定位到这个问题,如图(1)位置所示;第二步要选在堆栈中的某一个函数,一般的选择到OC函数调用,更底层的函数调用就到了CF层是C语言实现的就不好分析了,所以这里选择的是  这个函数分析,可以看到这个函数调用说花费的时间是 92ms,这是一个比较长的时间了,所以应该就是这里导致的卡顿了。

这个函数花费的时间和image图片的大小有关系的,选择另一个时间峰值范围,这个时间峰值范围是发生在小图之间的切换的

这个地方耗费的时间就比较小一点,不过也是达到了25ms,对于性能也是有一定的影响的。

解决问题

以上的分析可以得出结论: 函数绘制图片实现的。 

既然是UITextView内部的处理方式,所以这个函数调用行为是应用层改变不了的,不过UIImage对象是我们可以控制的,或者可以改变图片的显示方式来达到优化的目的,所以就有了以下的两种方案。

方案1

第一种方案就是对预览的图片进行压缩,然后再设置到NSTextAttachmen中,放到UITextView中显示

这样修改之后大图的滚到加载时间减少到了40ms左右 

虽然减少了一半的时间,不过,40ms的时间还是比较长的,下面会继续进行优化。

方案2

上面的方案进行了图片的压缩,时间的耗费还是因为  函数的调用,所以有没有一种更好的方案呢?答案是肯定的,可以把传给UITextView的image压缩成一个很小的,(这一步也可以不必,传递一个空的UIImageView对象即可,这里设置图片的主要原因是图片区域需要一个的光标),然后在 UITextView 所对应的图片区域添加一个UIImageView,在UIImageView中设置原始的图片即可,这种方案会比方案1的效果好很多。

方案二几个修改点:

设置NSTextAttachment的image为空的UIImage对象

Cell添加ImageView显示Image

下面是使用方案2优化之后的分析图 

图中可以看到 cellForRowAtIndexPath 方法总共占用了2ms的时间,从分析的堆栈中可以看到 UITextView setAttributedText: 方法才占用了1ms的时间,所以这个提升是很明显的,因为传递了一个空的UIImageView对象,不用执行  方法调用的时间。

总结

Instrument是一个很好工具,你用它可以很方便的帮我们定位到性能问题,问题找到了,那么也就很容易找到解决方案了。

单词instrument和tool作为“工具,手段”解时,用法有什么区别 请举例说明哦,谢谢~

一般人应该都说不出区别,基本上混用的,我理解,大词比小词(instr和tool)的工具复杂科技一点,tool工具简单一点,所以有的说是手工工具,至于有的说tool可以引申用,不足为据,难道大词就不能引申用?有的举例use writing as a tool of learning ,an instrument of learning都有用的,所以出这种区分题的人应该是不懂现代语言现实的老古板,非要区别的话,个人意见觉得小的有形大的无形,但不敢绝对化,只能具体语境凭语感aaaaaaaaa

使用instrument检测内存泄漏Target failed to run: Permission to debug *** was denied.

更新xcode 9之后,打开instrument调试应用时发现提示 Target failed to run: Permission to debug ****** was denied 而无法进行下去。

在xcode状态栏-》Product-》Scheme-》Edit Scheme,打开如下画面:

改成Debug模式后,重启xcode,如果不起作用,就重启电脑。
再次打开就可以愉快的使用instrument做你想做的事情啦~

equipment用is还是are

equipment用is。因为equipment是不可数名词,所以对应的要用is。

equipment释义:

n.设备,用具;(对某人或某物的)装备过程;(做某事应具备的)素质,才能

短语:

medical equipment 医疗器械;医疗仪器

radio equipment 无线电没备

Cryo Equipment 低温装置;低温设备;低温装备;低温装配

词语辨析:

facility, equipment, instrumentfacility n.指较大的设施、设备,尤指公用的、为大众带来便利的设备。

equipment n.指生产、研究所需要的设备、装置,如各种机器和器材,是不可数名词。

a factory with modern equipment具有现代化设备的工厂

instrument n.乐器,仪器,为某个用途而使用的工具。

As a flexible actor, he can perform, sing, dance and play several kinds of musical instruments.作为一个多才多艺的演员,他既可以表演,又会唱歌跳舞,还能够演奏不同种类的乐器。

instrument用法冠词

instrument
n.仪器;乐器;工具;器械
v.用器械(或仪器)装备;向…提交文书
1. A woodwind instrument having a straight,
cylindrical tube with a flaring bell and a single-reed mouthpiece, played by
means of finger holes and keys.
单簧管,黑管一种管乐器,有直的圆筒形管身和一个外敞的管口及一个单簧吹口,以指孔和键的方式演奏
2. The seller guarantees that the instrument
contract for will be made of the best material with first-class workmanship.
卖方保证合同中订购的仪器是以第一流的工艺和最好的材料制造的。
3. Musical Instrument Digital Interface, or MIDI, is a
communication interface provided on virtually every synthesizer made today.
音乐设备数字接口,或称MIDI, 实际上是为目前制造的各种合成器提供的一种通信接口。
4. The viola is a stringed instrument.
中提琴是一种弦乐器。
5. A virtuoso is one who is expert in playing a musical
instrument.
音乐大师是指在演奏某乐器方面是专家的人
6. An optical instrument that uses a lens or a
combination of lenses to produce magnified images of small objects, especially
of objects too small to be seen by the unaided eye.
显微镜用一个透镜或一些透镜的组合来制造小物体的放大形像的视力工具,通常用来观察肉眼看不到的物体

关于instrument的使用和iOS使用Instruments分析和优化CPU性能问题的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

instrument的使用(iOS使用Instruments分析和优化CPU性能问题)

本文编辑:admin

更多文章:


form表单制作(为什么制作的form表单会在网页显示中多出一行)

form表单制作(为什么制作的form表单会在网页显示中多出一行)

大家好,如果您还对form表单制作不太了解,没有关系,今天就由本站为大家分享form表单制作的知识,包括为什么制作的form表单会在网页显示中多出一行的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月11日 09:10

teammate(teammate,company,partner)

teammate(teammate,company,partner)

各位老铁们,大家好,今天由我来为大家分享teammate,以及teammate,company,partner的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧

2026年10月11日 06:10

javascript arraybuffer(javascript可以把base64编码转换成二进制代码吗求示例代码!)

javascript arraybuffer(javascript可以把base64编码转换成二进制代码吗求示例代码!)

其实javascript arraybuffer的问题并不复杂,但是又很多的朋友都不太了解javascript可以把base64编码转换成二进制代码吗求示例代码!,因此呢,今天小编就来为大家分享javascript arraybuffer的

2026年10月11日 04:00

text函数公式(excel中round和text函数的区别是什么)

text函数公式(excel中round和text函数的区别是什么)

“text函数公式”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看text函数公式(excel中round和text函数的区别是什么)!

2026年10月11日 03:50

pascal编程软件(介绍一下pascal语言!)

pascal编程软件(介绍一下pascal语言!)

大家好,如果您还对pascal编程软件不太了解,没有关系,今天就由本站为大家分享pascal编程软件的知识,包括介绍一下pascal语言!的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月11日 02:40

google chrome打不开(chrome浏览器打不开怎么回事 浏览器打不开的处理方法)

google chrome打不开(chrome浏览器打不开怎么回事 浏览器打不开的处理方法)

本篇文章给大家谈谈google chrome打不开,以及chrome浏览器打不开怎么回事 浏览器打不开的处理方法对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了

2026年10月11日 02:00

websocket整合springboot(Springboot整合Websocket遇到的坑)

websocket整合springboot(Springboot整合Websocket遇到的坑)

大家好,websocket整合springboot相信很多的网友都不是很明白,包括Springboot整合Websocket遇到的坑也是一样,不过没有关系,接下来就来为大家分享关于websocket整合springboot和Springbo

2026年10月11日 01:40

小米官方首爆miui14(miui14耗电严重官方回应)

小米官方首爆miui14(miui14耗电严重官方回应)

各位老铁们好,相信很多人对小米官方首爆miui14都不是特别的了解,因此呢,今天就来为大家分享下关于小米官方首爆miui14以及miui14耗电严重官方回应的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年10月11日 00:40

drawerlayout(android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕)

drawerlayout(android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕)

本篇文章给大家谈谈drawerlayout,以及android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年10月10日 19:20

xor四位数怎么运算(单片机怎样用C语言实现4个数字间的异或)

xor四位数怎么运算(单片机怎样用C语言实现4个数字间的异或)

大家好,今天小编来为大家解答以下的问题,关于xor四位数怎么运算,单片机怎样用C语言实现4个数字间的异或这个很多人还不知道,现在让我们一起来看看吧!

2026年10月10日 17:50

最近更新

thinkpade470c加内存条(thinkpad e470c内存条是什么牌子如果要添加4g内存什么牌子比较好)
2026-10-11 09:00:03 浏览:0
frontpage的主要功能(frontpage是什么)
2026-10-11 08:40:18 浏览:0
ideapad15alc7能玩什么游戏(联想ideapad15可以玩刺客信条启示录吗)
2026-10-11 08:10:05 浏览:0
热门文章

打印机m7400(m7400打印机清零方法)
2026-08-29 07:50:01 浏览:5
acrobat各版本区别(Acrobat XI Pro与 Acrobat PRO DC什么区别)
2026-08-29 22:30:20 浏览:2
联想y510p怎么升级(联想y510p换cpu)
2026-08-17 03:30:04 浏览:2
标签列表