iOS性能检测之Instrunments - 几种常用工具简单介绍

时间:2022-04-23 09:41:30

Instrunments:

iOS性能检测之Instrunments - 几种常用工具简单介绍 没错,就是这货,很多人平时开发可能不一定会用到这个,但我要说的是,学会使用它,会让你加分不少哦

先来一张一览图:

iOS性能检测之Instrunments - 几种常用工具简单介绍

1、打开方式

iOS性能检测之Instrunments - 几种常用工具简单介绍或者iOS性能检测之Instrunments - 几种常用工具简单介绍

两种方式都行。

2、今天主要介绍一下我常用的3种:Core Animation 、Leaks、Time Profiler

iOS性能检测之Instrunments - 几种常用工具简单介绍

打开方式:

双击图标,会进入到各自界面,然后我们就可以进行下面的工作。

此外,下面的测试都建议使用真机测试,模拟器会非常不准。其实,上面的工具,很多都适合用真机测试,除了Zombies等少数几个适合用模拟器测试。

第一个:Core Animation(核心动画) 

Core Animation工具是用来检测Core Animation性能的,不过我可能比较low,我主要用来看fps(一秒钟渲染多少帧 Frame Per Second = FPS),也就是滑动时查看界面是否卡顿。

一般FPS是60左右,过于低的话需要进行优化,当低于45时,用户一般是可以觉察到卡顿的,当低于20时,卡顿是特别明显,甚至影响使用了(之前测试过个位数fps,那感觉想让我摔手机)。

举例如图:

当停止不动时,fps为0.开始滑动时,fps会不断变化。

iOS性能检测之Instrunments - 几种常用工具简单介绍

PS:这里测试界面卡顿,还有另一种更便捷的方法,借助第三方封装的一个label,可以在界面实时看到fps,而不需要借助Instruments。

下载地址:Github地址

第二个:Leaks(内存泄露)

这个也比较常用,用来查看app运行期间,那些代码产生内存泄露。

内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。

iOS性能检测之Instrunments - 几种常用工具简单介绍

iOS性能检测之Instrunments - 几种常用工具简单介绍iOS性能检测之Instrunments - 几种常用工具简单介绍

PS:如果找不到,可能移到底部区域了,如下图:(xcode新版本会这样布局)

iOS性能检测之Instrunments - 几种常用工具简单介绍

其中,绿色勾表示运行正常,没有内存泄露,如果有泄露,会自动显示❌,下面我找一张有泄露的图

iOS性能检测之Instrunments - 几种常用工具简单介绍

按照我上面的方式设置完,点击❌,会定位到代码处,我们就能看到具体大概到代码位置了,然后对应去修改。

PS:这里我讲一点可能很多人没注意到一个点,就是关于AFNetworking3.0下存在的内存泄露。

如果你在每次使用时,都是重新

AFHttpSessionManager *sessionManager = [AFHttpSessionManager manager];

可能就会有这种问题,不管你是直接使用,还是封装后使用,只要用的时候是每次都申请一下sessionManager,就会有这种问题。

解决办法就是:对sessionManager进行单例处理,就可以避免。

参考文章戳这里:

AFNetworking3.x容易出现内存泄露的地方

利用Instruments中的Leaks处理内存泄露

第三个:Time Profiler(时间分析器)

用来检测app中每个方法所用的时间,并且可以排序,并查找出哪些函数占用了大量时间。

页面如下:

iOS性能检测之Instrunments - 几种常用工具简单介绍

我测试等demo内容比较少,所以数据不多,测试的时候,勾选右边红框

Separate by Thread:每个线程被单独考虑。这能让你知道哪一个线程占用CPU最多。

Invert Call Tree:选中该选项后,调用栈会自上至下显示。这通常是你需要的,因为你想知道CPU花费时间的那个最深的方法。

Hide System Libraries:选中该选项后,只有你自己app中出现的符号会被显示出来。

然后就可以分析代码各阶段或者具体代码分别执行多长时间了。

其实其他的工具都有各自的使用场景,这里我只是简单介绍了几种比较常用的,大家有兴趣可以深入了解一下Instruments的使用场景。。。。

Enjoy~~~

iOS性能检测之Instrunments - 几种常用工具简单介绍的更多相关文章

  1. iOS开发CoreAnimation解读之三——几种常用Layer的使用解析

    iOS开发CoreAnimation解读之三——几种常用Layer的使用解析 一.CAEmitterLayer 二.CAGradientLayer 三.CAReplicatorLayer 四.CASh ...

  2. iOS开发UI篇—多控制器和导航控制器简单介绍

    iOS开发UI篇—多控制器和导航控制器简单介绍 一.多控制器 一个iOS的app很少只由一个控制器组成,除非这个app极其简单.当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个vi ...

  3. 第二章 Qt常用工具的介绍

    第二章 Qt常用工具的介绍 (1)No.1 qmake 相信编写过Makefile的开发人员,随着工程中源码的级数递增和以类型.功能.模块组织源码的子目录的增多,都不愿意重复机械地手工编写这个工程管理 ...

  4. spring中常用工具类介绍

    http://www.cnblogs.com/langtianya/p/3875103.html 文件资源操作     Spring 定义了一个 org.springframework.core.io ...

  5. iOS性能检测工具instrunments简单介绍

    1.前提条件 在appstore中下载安装xcode 2.打开方式 3.页面元素介绍 3.电脑连接手机选中要测试的app 4.选中要测试哪项,双击进去,点击开始进行监控测试 5.主要介绍一下三项 第一 ...

  6. Web性能优化:基本思路和常用工具

    听了荣华的演讲之后,我对性能优化有了更深层次的认识. 性能优化的重要性 性能优化是为了赢得用户,为了降低成本. 性能优化思路 Web常见优化点   Java常见排查工具  

  7. java几种常用设计模式简单示例

    1.单例设计模式 所谓单例设计模式简单说就是无论程序如何运行,采用单例设计模式的类(Singleton类)永远只会有一个实例化对象产生.具体实现步骤如下: (1) 将采用单例设计模式的类的构造方法私有 ...

  8. linux常用命令简单介绍(netstat,awk,top,tail,head,less,more,cat,nl)

    1.netstat netstat -tnl | grep 443 (查看443端口是否被占用) root用户,用netstat -pnl | grep 443 (还可显示出占用本机443端口的进程P ...

  9. Linux_常用命令简单介绍(netstat,awk,top,tail,head,less,more,cat,nl)

    1.netstat netstat -tnl | grep 443 (查看443端口是否被占用) root用户,用netstat -pnl | grep 443 (还可显示出占用本机443端口的进程P ...

随机推荐

  1. Ignite性能测试以及对redis的对比

    测试方法 为了对Ignite做一个基本了解,做了一个性能测试,测试方法也比较简单主要是针对client模式,因为这种方法和使用redis的方式特别像.测试方法很简单主要是下面几点: 不作参数优化,默认 ...

  2. java web分享ppt大纲 -- servlet容器简介

    今天在公司分享了java web的ppt,把ppt大纲放在这里,希望可以帮助需要的人 servlet容器简介 定义 狭义上的,servlet容器为java Web应用提供运行时环境,负责管理servl ...

  3. hbase自带mapreduce计数表行数功能

    $HBASE_HOME/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter ‘tablename’ mapreduce来计数,很快的!!!

  4. 运用《深入理解Java虚拟机》书中知识解决实际问题

    前言 以前看别人博客说看完<深入理解Java虚拟机>这本书并没有让自己的编程水平提高多少,不过却大大提高了自己的装逼水平.其实,我倒不这么认为,至少在我看完一遍这本书后,有一种醍醐灌顶的感 ...

  5. &lpar;一&rpar;走进Metasploit渗透测试框架

    渗透测试的流程 渗透测试是一种有目的性的,针对目标机构计算机系统安全的检测评估方法,渗透测试的主要目的是改善目标机构的安全性.渗透测试各个阶段的基本工作: 1.前期交互阶段 在这个阶段,渗透测试工程师 ...

  6. &lowbar;&lowbar;unsafe&lowbar;unretained的含义

    OC的变量限定词的官方解释: __strong is the default. An object remains “alive” as long as there is a strong point ...

  7. 整理 logging 2种方式

    第一种************************************************************************************************* ...

  8. Android gravity和layout&lowbar;gravity的区别

    一.gravity和layout_gravity相同处 两者都是设置对齐方式的属性.内部的属性值相同. 根据英文意思也能理解其中的意思.如center_horizontal表示在水平方向上的位置为中间 ...

  9. Source Insight 中文注释为乱码解决办法(完美解决,一键搞定)

    我从网上查了一堆解决办法,但是都是2017年以前的解决方案,并且都是针对于source insight 3.5及以下版本的,目前SI软件版本都到4.0了,应该有新方法出现了. ------------ ...

  10. c&num; 使用GDAL处理大图

    注意问题: 1.GDAL 使用官网生成好的dll,必须把Bin目录下的dll一并加到执行目录下去,否则会出错.  2. 用环境变量设置引用路径可以避免一大堆dll放一起.代码如下: /// <s ...