iOS instruments介绍

iOS instruments介绍

本文csdn地址:http://blog.csdn.net/game3108/article/details/51147909
写代码的时候,我们时常需要借助一些工具来帮我们分析问题、找到问题,来达到调适和优化代码的目的。在iOS开发方面,XCode提供了一系列工具来帮助我们解决问题,这就是instruments。

苹果文档这么介绍instruments:

Instruments is a powerful and flexible performance-analysis and testing tool that’s part of the Xcode tool set. It’s designed to help you profile your OS X and iOS apps, processes, and devices in order to better understand and optimize their behavior and performance. Incorporating Instruments into your workflow from the beginning of the app development process can save you time later by helping you find issues early in the development cycle.

本文主要介绍一下instruments,和其中几个常用的工具。

界面介绍

instruments工作流程图:

instruments工作流程图
instruments工作流程图

打开instruments方法:

通过Xcode菜单打开instruments:

  • Choose Xcode > Open Developer Tool > Instruments

通过Xcode project打开instruments:

  • Choose Product > Profile
  • Click and hold the Run button in the Xcode toolbar and choose Profile.
  • Press Command-I

instruments主界面图:

instruents主界面图
instruents主界面图

Core Animation

The Core Animation instrument captures information on selected animation statistics. It can record information from a single process or from all processes running on the system.

Core Animation需要注意的一点是,必须是真机调试。



其中调试最主要的以下几个选项:

以下参考参考链接2:

比较重要的:

  • "Color Blended Layers":图层混合

显示出被混合的图层Blended Layer(用红色标注),Blended Layer是因为这些Layer是透明的(Transparent),系统在渲染这些view时需要将该view和下层view混合(Blend)后才能计算出该像素点的实际颜色。所以红色越少越好

  • "Color Hits Green and Misses Red":图层缓存

很多视图Layer由于Shadow、Mask和Gradient等原因渲染很高,因此UIKit提供了API用于缓存这些Layer:[layer setShouldRasterize:YES],系统会将这些Layer缓存成Bitmap位图供渲染使用,如果失效时便丢弃这些Bitmap重新生成。所以绿色越多,红色越少越好

  • "Color Offscreen-Rendered Yellow":离屏渲染

Offscreen-Rendering离屏渲染意思是iOS要显示一个视图时,需要先在后台用CPU计算出视图的Bitmap,再交给GPU做Onscreen-Rendering显示在屏幕上,因为显示一个视图需要两次计算,所以这种Offscreen-Rendering会导致app的图形性能下降。所以黄色越少越好。

次要的:

  • "Color Misaligned Images":图片缩放

Misaligned Image表示要绘制的点无法直接映射到频幕上的像素点,此时系统需要对相邻的像素点做anti-aliasing反锯齿计算,增加了图形负担,通常这种问题出在对某些View的Frame重新计算和设置时产生的。

  • "Color Copied images":标注应用绘制时被Core Animation复制的图片
  • "Color Immediately":Instruments在做color-flush操作时取消10毫秒的延时
  • "Color Compositing Fast-Path Blue":标记由硬件绘制的路径
  • "Flash Updated Regions":重绘的区域

对图形性能的分析意义较小,通常仅作为参考。

Timer Profiler

The Time Profiler instrument captures stack trace information at prescribed intervals. It can record information from a single process or from all processes running on the system.

对于Call Tree的设置参数解释:

以下参考参考链接4:

  • Separate by Thread: 每个线程应该分开考虑。只有这样你才能揪出那些大量占用CPU的"重"线程
  • Invert Call Tree: 从上倒下跟踪堆栈,这意味着你看到的表中的方法,将已从第0帧开始取样,这通常你是想要的,只有这样你才能看到CPU中话费时间最深的方法.也就是说FuncA{FunB{FunC}} 勾选此项后堆栈以C->B-A 把调用层级最深的C显示在最外面
  • Hide Missing Symbols: 如果dSYM无法找到你的app或者系统框架的话,那么表中看不到方法名只能看到十六进制的数值,如果勾线此项可以隐藏这些符号,便于简化数据
  • Hide System Libraries: 勾选此项你会显示你app的代码,这是非常有用的. 因为通常你只关心cpu花在自己代码上的时间不是系统上的
  • Show Obj-C Only: 只显示oc代码 ,如果你的程序是像OpenGl这样的程序,不要勾选侧向因为他有可能是C++的
  • Flatten Recursion: 递归函数, 每个堆栈跟踪一个条目

其中可以看到每一个方法的调用时间

双击相应方法,可以看到整个的运行时间:


Leaks

The Leaks instrument captures information about leaked memory. It can record information from a single process only.

Leaks那行出现的红色标签代表着有内存泄漏。
先在左上角暂停一下程序运行,切换详情的Leaks到Call Tree,
并且在设置界面勾选上"invert Call Tree"和"Hide System Libraries",就可以在看到相应的调用函数:

双击相关函数,就可以跳转到对应出问题的代码,进行修改:

参考链接

1.iOS developer library: Instruments User Guide
2.iOS App的性能关注点:iOS App的性能关注点
3.Designing for iOS: Graphics & Performance:Designing for iOS: Graphics & Performance
4.iOS系类教程之用instruments来检验你的app:iOS系类教程之用instruments来检验你的app
5.Instruments Tutorial with Swift: Getting Started:Instruments Tutorial with Swift: Getting Started

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,817评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,329评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,354评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,498评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,600评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,829评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,979评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,722评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,189评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,519评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,654评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,940评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,762评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,993评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,382评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,543评论 2 349

推荐阅读更多精彩内容

  • 第二章 第二节 第二段 曾经有人对我说过,人这一生所经历的事情大多不能两全,二者之间必然需要狠下心来作出选择,...
    雨象阅读 336评论 0 0
  • 现在用的这个iphone6是结婚后第一个生日黄桃爹地送的,刚好有换手机需求,我们互相送礼物都是属于实用派的。 用到...
    李小月_lixiaoyue阅读 189评论 0 1
  • 元宵将至,年总是要过完的,返城的人群已陆续回到不是故乡的那个家。春运,到元宵后,大概也算告一段落了,交通便利的今天...
    墨语花开时阅读 809评论 4 3
  • 昨日的疲惫还没缓过来 今天又要再次奔忙 坐在公交车上 除了一直后倒的房子和田野 还有微躁的风 昏沉的大脑 充斥着手...
    墨沾医衫阅读 159评论 0 0
  • 来简书半个月了,却不得不开一个小号,大号名叫煽海鲸,因为此刻内心的迷茫,便取名茫鲸。我不知道我这么做对不对,但愿...
    茫鲸阅读 181评论 0 1