• 仪表

   xcode5 引入了调试仪表,通过仪表可以直观的看出应用的CPU和内存占用量。运行一个程序,点击仪表栏。可以发现当程序处于运行状态时,调试导航面板会以柱状图显示CPU和内存占用量,并随着应用实时更新占用量数据。需要注意的是,调试导航面板中的数据是根据应用的硬件计算出来的,苹果电脑的CPU比iOS设备更快,如果在iOS模拟器上运行应用,调试导航面板中显示的CPU赞用量可能非常低,不低于分析性能问题。

  点击CPU可以在编辑区域打开CPU占用量报告。

  •   占用百分比(Precentage Utilized)

  根据运行应用设备的CPU核心数显示CPU占用比。例如,单核设备中最大CPU占用量是100%,而对双核设备中是200%,所以应用在单核设备中的CPU占用量通常比双核设备更高。如果应用处于空闲状态(进入后台活没有操作),CPU占用量会显示0%。

  •   占用环比(Utilization Comparison)

  使用环比图比较应用与系统中其他进程(Process)的CPU占用百分比。如果应用的CPU占用百分环比不高,但是运行不通畅,那么可以从该环形图中查看Other Processes的占用百分比。如果设备中后台运行的其他应用太多 ,就可能导致Other Processes的占用百分比很高,应用运行速度变慢。

  •   时间-占用比(Utilization over Time)

  使用折线图显示应用CPU占用量随运行时间变化的过程,以及占用量在运行时间内的峰值和谷值。

  •   线程(Threads)

  显示应用中每一个线程的时间-占用比。

  

  接下来我们打开我们应用 JXTouchTracker ,用手指在应用中绘制线条,手指不要离开屏幕,持续绘制大量线条可以发现应用的CPU占用比迅速升高-手指在屏幕上移动时,JXDrawView会不断收到 touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event 消息并调用 drawRect:(CGRect)rect 重绘自己。绘制的线条越多, drawRect:(CGRect)rect 的工作量就越大,CPU占用比就越高。

  回到吊事导航面板,点击Memory,打开内存占用量报告,如图:

  和CPU占用量报告类似,内存占用量报告直接的显示了应用内存占用的情况,但是Memery部分(位于最下方)显示的折线图可能会让我们误解:应用似乎始终占用了100%的内存。实际上,途中将运行时间内的占用峰值作为100%显示,因此途中y周的最大值与左侧High栏中显示的数值相同都是58.2MB。

  无论开发何种类型的应用,都应该尽可能降低CPU和内存占用量,提高应用的流畅度和用户体验。

  • Instruments

  从仪表和占用量报告中可以简要分析出应用的性能,但是,如果应用的CPU和内存占用量过高,需要从代码中查找性能问题,则可以使用 Instruments ,他提供了比仪表和占用量报告更详细的数据分析。

   Instruments 是一中与Xcode紧密集成的调试工具,可以实时监控并统计应用运行时的各项数据,生成详细的分析报告。它由若干组件组成,这些组件检查的事项包括:应用创建了那些对象,每一个方法和函数的CPU占用量、文件I/O和网络I/O等。通过使用这些不同的组件,可以找出程序中的性能瓶颈,发现代码中的问题。

  •  Allocations 组件

   Allocations 组件可以列出应用创建过的全部对此昂,以及这些对象所占用的内存大小。

  当监视某个应用时, Allocations 组件会对这个应用进行性能分析。虽然可以在模拟器上对某个应用进行性能分析,但是在真是的设备上进行可以得到更精确的数据。

  要对当前打开的项目执行性能分析,可以按住位于坐上角的 Run 按钮不放,然后在新出现的弹出窗口中选择 Profile

  Xcode会启动 Instruments 。 Instruments 会显示一个下拉窗口并列出所有可用的组件。选中 Allocations 。之后 Instruments 会启动应用并打开 Instruments 的主窗口。

   Allocations 组件会显示一张表格,流出应用 执行过的所有内存分配。因为数据比较多,所以先过滤,只列出由我们自己编写的代码创建的对象。首先在JXDrawView对象上画若干线条。然后在窗口 Category 查询框中输入 JXLine 

   Allocations 组件会过滤  Object Summary 表格所显示的条目,只列出和 JXLine 右端的内存分配,即我们自己创建的 JXLine 对象。

   #Persistent 列会显示某种对象的现存个数。 Persistent Bytes 列会显示这些现存对象占用了多少内存。 # Total 列会显示应用运行至今共创建了多少个某种类型的对象(其中包括已经释放的对象)。

iOS 调试工具的更多相关文章

  1. iOS——调试工具LLDB学习

    一.前言 LLDB是个开源的内置于XCode的具有REPL(read-eval-print-loop)特征的Debugger,其可以安装C++或者Python插件.在日常的开发和调试过程中给开发人员带 ...

  2. iOS宇宙大战游戏、调试工具、各种动画、AR相册、相机图片编辑等源码

    iOS精选源码 日期时间选择器,swift Space Battle 宇宙大战 SpriteKit游戏源码 LLDebugTool - 便捷的IOS调试工具(新增截屏功能) 相机扫描or长按识别二维码 ...

  3. 开源 iOS 项目分类索引大全 - 待整理

    开源 iOS 项目分类索引大全 GitHub 上大概600个开源 iOS 项目的分类和介绍,对于你挑选和使用开源项目应该有帮助 系统基础库 Category/Util sstoolkit 一套Cate ...

  4. 史上最全的常用iOS的第三方框架

    文章来源:http://blog.csdn.net/sky_2016/article/details/45502921 图像: 1.图片浏览控件MWPhotoBrowser       实现了一个照片 ...

  5. 常用iOS的第三方框架

    图像:1.图片浏览控件MWPhotoBrowser       实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等 ...

  6. IOS debug网络PonyDebugger 实践篇

    引言:  PonyDebugger是一个很给力的iOS调试工具,它的监视器安装在Chrome浏览器下做为插件使用,通过监视器和PonyDebugger的iOS SDK相辅相成,可以很好的监视App的运 ...

  7. 开源 iOS 项目分类索引大全

    GitHub 上大概600个开源 iOS 项目的分类和介绍,对于你挑选和使用开源项目应该有帮助 系统基础库 Category/Util sstoolkit 一套Category类型的库,附带很多自定义 ...

  8. iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)--(转)

    图像: 1.图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作. 下 ...

  9. iOS开发--开源库

    图像: 1.图片浏览控件MWPhotoBrowser        实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩 ...

随机推荐

  1. 【SQLServer】【恢复挂起的解决方案】附加文件时候的提示“无法重新生成日志,原因是数据库关闭时存在打开的事务/用户,该数据库没有检查点或者该数据库是只读的。 ”【数据库恢复】

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 先贴错误: 吐槽一下: 进入正题: 新建一个同名数据库 停止MSSQL服务 替换数据库文 ...

  2. ASP.NET Core应用针对静态文件请求的处理[3]: StaticFileMiddleware中间件如何处理针对文件请求

    我们通过<以Web的形式发布静态文件>和<条件请求与区间请求>中的实例演示,以及上面针对条件请求和区间请求的介绍,从提供的功能和特性的角度对这个名为StaticFileMidd ...

  3. Hawk 7. 常见问题

    本页面您可以通过关键字搜索来获取信息. 理性使用爬虫 爬虫是一种灰色的应用,虽然作为Hawk的设计者,但我依然不得不这么说. 各大网站都在收集和整理数据上花费了大量的精力,因此抓取的数据应当仅仅作为科 ...

  4. ASP.NET SignaiR 实现消息的即时推送,并使用Push.js实现通知

    一.使用背景 1. SignalR是什么? ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程.实时 Web 功能是指 ...

  5. Ubuntu下开启php调试模式,显示报错信息

    在Ubuntu下php的缺省设置是不显示错误信息的,如果程序出错会显示“无法处理此请求的错误提示”,这在开发环境下非常不方便. 其实我们只要编辑下apache的配置文件就好 1.我的apache 配置 ...

  6. OpenSUSE下编译安装OpenFoam

    在不是Ubuntu系统下安装OpenFoam,需要采用编译安装的方式.以下以OpenSuSE为例进行编译安装. 1 软件包准备 需要下载两个程序包: OpenFOAM-4.x-version-4.1. ...

  7. http协议(十一)http与https

    一.http的缺点 之前有介绍过http协议相关的一些知识,http是相当优秀和方便的,但它也有缺点,主要不足表现在如下几个方面: △ 通信使用明文(不加密),内容可能会被窃听 △ 不验证通信方的身份 ...

  8. MonoDevelop 4.0.9 on CentOS 6.3 安装笔记

    前言 Mono的前东家Novell公司旗下的SUSE Linux系列对Mono及MonoDevelop提供内置支持,所以在SUSE/OpenSUSE这些Linux系统中安装MonoDevelop是非常 ...

  9. 一步步学习javascript基础篇(0):开篇索引

    索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...

  10. 基于Netty打造RPC服务器设计经验谈

    自从在园子里,发表了两篇如何基于Netty构建RPC服务器的文章:谈谈如何使用Netty开发实现高性能的RPC服务器.Netty实现高性能RPC服务器优化篇之消息序列化 之后,收到了很多同行.园友们热 ...