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

1、打开方式
或者
两种方式都行。
2、今天主要介绍一下我常用的3种:Core Animation 、Leaks、Time Profiler

打开方式:
双击图标,会进入到各自界面,然后我们就可以进行下面的工作。
此外,下面的测试都建议使用真机测试,模拟器会非常不准。其实,上面的工具,很多都适合用真机测试,除了Zombies等少数几个适合用模拟器测试。
第一个:Core Animation(核心动画)
Core Animation工具是用来检测Core Animation性能的,不过我可能比较low,我主要用来看fps(一秒钟渲染多少帧 Frame Per Second = FPS),也就是滑动时查看界面是否卡顿。
一般FPS是60左右,过于低的话需要进行优化,当低于45时,用户一般是可以觉察到卡顿的,当低于20时,卡顿是特别明显,甚至影响使用了(之前测试过个位数fps,那感觉想让我摔手机)。
举例如图:
当停止不动时,fps为0.开始滑动时,fps会不断变化。

PS:这里测试界面卡顿,还有另一种更便捷的方法,借助第三方封装的一个label,可以在界面实时看到fps,而不需要借助Instruments。
下载地址:Github地址
第二个:Leaks(内存泄露)
这个也比较常用,用来查看app运行期间,那些代码产生内存泄露。
内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。



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

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

按照我上面的方式设置完,点击❌,会定位到代码处,我们就能看到具体大概到代码位置了,然后对应去修改。
PS:这里我讲一点可能很多人没注意到一个点,就是关于AFNetworking3.0下存在的内存泄露。
如果你在每次使用时,都是重新
AFHttpSessionManager *sessionManager = [AFHttpSessionManager manager];
可能就会有这种问题,不管你是直接使用,还是封装后使用,只要用的时候是每次都申请一下sessionManager,就会有这种问题。
解决办法就是:对sessionManager进行单例处理,就可以避免。
参考文章戳这里:
第三个:Time Profiler(时间分析器)
用来检测app中每个方法所用的时间,并且可以排序,并查找出哪些函数占用了大量时间。
页面如下:

我测试等demo内容比较少,所以数据不多,测试的时候,勾选右边红框
Separate by Thread:每个线程被单独考虑。这能让你知道哪一个线程占用CPU最多。 Invert Call Tree:选中该选项后,调用栈会自上至下显示。这通常是你需要的,因为你想知道CPU花费时间的那个最深的方法。 Hide System Libraries:选中该选项后,只有你自己app中出现的符号会被显示出来。
然后就可以分析代码各阶段或者具体代码分别执行多长时间了。
其实其他的工具都有各自的使用场景,这里我只是简单介绍了几种比较常用的,大家有兴趣可以深入了解一下Instruments的使用场景。。。。
Enjoy~~~
iOS性能检测之Instrunments - 几种常用工具简单介绍的更多相关文章
- iOS开发CoreAnimation解读之三——几种常用Layer的使用解析
iOS开发CoreAnimation解读之三——几种常用Layer的使用解析 一.CAEmitterLayer 二.CAGradientLayer 三.CAReplicatorLayer 四.CASh ...
- iOS开发UI篇—多控制器和导航控制器简单介绍
iOS开发UI篇—多控制器和导航控制器简单介绍 一.多控制器 一个iOS的app很少只由一个控制器组成,除非这个app极其简单.当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个vi ...
- 第二章 Qt常用工具的介绍
第二章 Qt常用工具的介绍 (1)No.1 qmake 相信编写过Makefile的开发人员,随着工程中源码的级数递增和以类型.功能.模块组织源码的子目录的增多,都不愿意重复机械地手工编写这个工程管理 ...
- spring中常用工具类介绍
http://www.cnblogs.com/langtianya/p/3875103.html 文件资源操作 Spring 定义了一个 org.springframework.core.io ...
- iOS性能检测工具instrunments简单介绍
1.前提条件 在appstore中下载安装xcode 2.打开方式 3.页面元素介绍 3.电脑连接手机选中要测试的app 4.选中要测试哪项,双击进去,点击开始进行监控测试 5.主要介绍一下三项 第一 ...
- Web性能优化:基本思路和常用工具
听了荣华的演讲之后,我对性能优化有了更深层次的认识. 性能优化的重要性 性能优化是为了赢得用户,为了降低成本. 性能优化思路 Web常见优化点 Java常见排查工具
- java几种常用设计模式简单示例
1.单例设计模式 所谓单例设计模式简单说就是无论程序如何运行,采用单例设计模式的类(Singleton类)永远只会有一个实例化对象产生.具体实现步骤如下: (1) 将采用单例设计模式的类的构造方法私有 ...
- linux常用命令简单介绍(netstat,awk,top,tail,head,less,more,cat,nl)
1.netstat netstat -tnl | grep 443 (查看443端口是否被占用) root用户,用netstat -pnl | grep 443 (还可显示出占用本机443端口的进程P ...
- Linux_常用命令简单介绍(netstat,awk,top,tail,head,less,more,cat,nl)
1.netstat netstat -tnl | grep 443 (查看443端口是否被占用) root用户,用netstat -pnl | grep 443 (还可显示出占用本机443端口的进程P ...
随机推荐
- UIStackView属性解释
Distribution 分布: Fill:填充,会根据优先级来压缩或伸长元素 Fill Equal:全都相等,并且都填充满 Fill Proportionally:按比例填充,根据元素的内容多少的比 ...
- CentOS 7.0编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14方法分享
一.配置防火墙,开启80端口.3306端口 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop fi ...
- windows apache 开启 GZIP
从服务端优化来说,通过对服务端做压缩配置可以大大减小文本文件的体积,从而使加载文本的速度成倍的加快.目前比较通用的压缩方法是启用gzip压缩.它 会把浏览器请求的页面,以及页面中引用的静态资源以压缩包 ...
- hcharts中文网 一个js图表库
http://www.bossidc.com/info/gongju/2013/0717/2133.html hcharts源码包下载 http://www.hcharts.cn/demo/hig ...
- 读取SQLServer数据库存储过程列表及参数信息
得到数据库存储过程列表: select * from dbo.sysobjects where OBJECTPROPERTY(id, N'IsProcedure') = 1 order by name ...
- SQL server存储过程:数据的插入和更新
存储过程的功能非常强大,在某种程度上甚至可以替代业务逻辑层, 接下来就一个小例子来说明,用存储过程插入或更新语句. 1.数据库表结构 所用数据库为Sql Server2008. 2.创建存储过程 (1 ...
- 关于MVC结构
简单的记录,只是想记录一下现在对MVC的理解. MVC,即模型(MODEL),视图(VIEW),控制器(CONTROLLER) 模型是数据模型 视图是图形界面 控制器是在两个之间的控制部分,用来将数据 ...
- linux命令行模式下对FTP服务器进行文件上传下载
参考源:点击这里查看 1. 连接ftp服务器 格式:ftp [hostname| ip-address]a)在linux命令行下输入: ftp 192.168.1.1 b)服务器询问你用户名和密码 ...
- cmake的四个命令:add_compile_options、add_definitions、target_compile_definitions、build_command
cmake的四个命令:add_compile_options.add_definitions.target_compile_definitions.build_command add_compile_ ...
- 学习Cocos2d的博客 --推荐
http://xiaominghimi.blog.51cto.com/2614927/d-6/p-1