• 仪表

   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. Android 问题汇总(持续更新)

    Q1:Error:(93, 12) 错误: 需要常量表达式 问题描述:这个问题是在添加一个module到项目中时遇到的,主要原因是因为原来module中的R文件是不会以final形式存在的,但是在mo ...

  2. 源码分析netty服务器创建过程vs java nio服务器创建

    1.Java NIO服务端创建 首先,我们通过一个时序图来看下如何创建一个NIO服务端并启动监听,接收多个客户端的连接,进行消息的异步读写. 示例代码(参考文献[2]): import java.io ...

  3. SQLServer 版本之八大方法搞清 "我是谁"

    你正在使用 SQL Server 的哪个版本? 贴士:作为一个SQL Server数据库管理者或维护.支持人员,应该会经常问自己这样一个问题:我当前SQL Server版本号是?当前版本已经有的累计更 ...

  4. .NET跨平台之运行与Linux上的Jexus服务器

    谈及.NET跨平台,已经不是什么稀奇的事儿.今天我们就以Jexus服务器的部署为例.简单示范下.在这里,我用VMWare虚拟机来搭建Linux运行环境. Linux,我们选择CentOS7.大家可以前 ...

  5. js数组学习整理

    原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); // ...

  6. 程序员必须要知道的Hadoop的一些事实

    程序员必须要知道的Hadoop的一些事实.现如今,Apache Hadoop已经无人不知无人不晓.当年雅虎搜索工程师Doug Cutting开发出这个用以创建分布式计算机环境的开源软...... 1: ...

  7. Android中Fragment的两种创建方式

    fragment是Activity中用户界面的一个行为或者是一部分.你可以在一个单独的Activity上把多个Fragment组合成为一个多区域的UI,并且可以在多个Activity中再使用.你可以认 ...

  8. Android studio使用git教程

    ①下载Git工具,配置到Android studio中 http://git-scm.com/downloads ------------------------------------------- ...

  9. OpenGL ES 3.0: 图元重启(Primitive restart)

    [TOC] 背景概述 在OpenGL绘制图形时,可能需要绘制多个并不相连的图形.这样的情况下这几个图形没法被当做一个图形来处理.也就需要多次调用 DrawArrays 或 DrawElements. ...

  10. 在Ubuntu中搭建.NET开发环境

    Mono简介Mono是Xamarin公司C#和CLR的ECMA标准基于开发的一个开源的.NET实现版本,它是Linux平台上开发.NET应用程序首选.同时其也提供了Xamarin.IOS和Xamari ...