iOS性能检测工具instrunments简单介绍
1、前提条件
在appstore中下载安装xcode
2、打开方式

3、页面元素介绍

3、电脑连接手机选中要测试的app

4、选中要测试哪项,双击进去,点击开始进行监控测试

5、主要介绍一下三项
第一个:Core Animation(核心动画)
Core Animation工具是用来检测Core Animation性能的,我主要用来看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中出现的符号会被显示出来。
然后就可以分析代码各阶段或者具体代码分别执行多长时间了。
iOS性能检测工具instrunments简单介绍的更多相关文章
- iOS性能检测之Instrunments - 几种常用工具简单介绍
Instrunments: 没错,就是这货,很多人平时开发可能不一定会用到这个,但我要说的是,学会使用它,会让你加分不少哦 先来一张全家福: 1.打开方式 或者 两种方式都行. 2.今天主要介绍一下 ...
- iOS开发多线程篇—多线程简单介绍
iOS开发多线程篇—多线程简单介绍 一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ.Xcod ...
- iOS开发UI篇—UITabBarController简单介绍
iOS开发UI篇—UITabBarController简单介绍 一.简单介绍 UITabBarController和UINavigationController类似,UITabBarControlle ...
- iOS开发数据库篇—SQLite简单介绍
iOS开发数据库篇—SQLite简单介绍 一.离线缓存 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等. 说明:离线缓存一般都是把数据保存到项目的沙盒中.有以下几种方式 (1 ...
- iOS开发拓展篇-XMPP简单介绍
iOS开发拓展篇-XMPP简单介绍 一.即时通讯简单介绍 1.简单说明 即时通讯技术(IM)支持用户在线实时交谈.如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友在其中输入信息并让交谈双 ...
- 李洪强iOS开发Swift篇—01_简单介绍
李洪强iOS开发Swift篇—01_简单介绍 一.简介 Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,是它的LOGO 是一只燕子,跟Objec ...
- 【转】 iOS开发数据库篇—SQLite简单介绍
开始学SQLite啦, 原文: http://www.cnblogs.com/wendingding/p/3868893.html iOS开发数据库篇—SQLite简单介绍 一.离线缓存 在项目开发中 ...
- 推荐AndroidGodEye Android性能检测工具
推荐AndroidGodEye Android性能检测工具 1 介绍 AndroidGodEye是一个可以在PC浏览器中实时监控Android性能数据指标的工具,你可以通过wifi/usb连接手机和p ...
- iOS开发UI篇—Modal简单介绍
iOS开发UI篇—Modal简单介绍 一.简单介绍 除了push之外,还有另外一种控制器的切换方式,那就是Modal 任何控制器都能通过Modal的形式展⽰出来 Modal的默认效果:新控制器从屏幕的 ...
随机推荐
- Mac OS 终端利器 iTerm2配置大全
之前一直使用 Mac OS 自带的终端,用起来虽然有些不太方便,但总体来说还是可以接受的,是有想换个终端的想法,然后今天偶然看到一个终端利器 iTerm2,发现真的很强大,也非常的好用,按照网上配置了 ...
- malloc函数、calloc函数和free函数
malloc函数和free函数 malloc函数原型:void *malloc(long NumBytes) malloc原型说明:mallco函数在堆分配了NumBytes个字节的内存空间,用来存放 ...
- Django框架(七):模型(三) 关联、模型类的属性
1. 关联 1.1 模型类关系 关系型数据库的关系包括三种类型: ForeignKey:一对多,将字段定义在多的一端中. ManyToManyField:多对多,将字段定义在任意一端中. OneToO ...
- SALESGROSSSALES_成本_利润
//获取成本GETCOST_TMP:NoConcatenateLOAD T_SAL_OUTSTOCK.LE_ID, [T_SAL_OUTSTOCK.LCY CODE], T_SAL_OUTSTOCK. ...
- 吴裕雄--天生自然ShellX学习笔记:Shell printf 命令
printf 命令模仿 C 程序库(library)里的 printf() 程序. printf 由 POSIX 标准所定义,因此使用 printf 的脚本比使用 echo 移植性好. printf ...
- Python—快速排序算法
# _*_ coding=utf-8 _*_ """ 快速排序: 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比 另外一部分的所有数据都要小,然后 ...
- 远程SSH服务使用指南
Author Email Yaoyao Liu yaoyaoliu@msn.com 本文所有教程以ubuntu为例,对其他unix内核系统如Debian.CentOS.macOS等也适用. 目录 安装 ...
- 关于Linux下Oracle安装后启动的问题
1.首先,切换成oracle用户,启动监听服务.(中间的横杠必须加上,不然会出现command not found 的错误) 命令1:su - oralce 命令2:lsnrctl start 参 ...
- 套接字详解(socket)
用户认为的信息之间传输只是建立以两个应用程序上,实际上在TCP连接中是靠套接字来作为他们连接的桥梁. 那么什么是套接字呢? TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点,这种端点就叫做 ...
- python-day8爬虫基础之数据存储
数据存储,在爬虫中也是十分的重要,因为我们要把我们想要的数据保存到本地,其中最简单直接的就是保存为文件文本,比如:TXT.JSON.CSV等等,除此之外,我们还可以将其保存到数据库中,常见的数据库类型 ...