iOS性能概述

1. 性能分类

性能主要分为:系统资源使用情况以及快速响应给用户。前者由于系统资源是有限的,包括cpu、内存、存储空间等,后者是程序快速响应用户操作,比如启动时间。

CPU time:尽可能地将线程移出CPU,优化CPU、优化绘制代码。

内存:减少程序的内存以及内存页的占用。

存储空间:无论是本地文件系统和网络文件系统都是性能的最大瓶颈之一。优化目标是消除不必要的文件操作。

2. 性能测试的大致过程

1)建立基准线:基准线的建立方法有竞争对手、之前的build,另外基准线的建立要保持一致性且尽量使用最慢的硬件配置;

2)尽早测试、频繁测试;

3)分析测试结果,将测试结果视图化;

4)算法分析和优化;

3. 性能测试的方法

instruments, watch code in the debugger,logger checkpoints,编码替代解决方案;

4. 性能测试的几个关键测试点

1)关键流程代码

2)界面绘制代码

3)启动时间:预先计算库地址范围并且存储在binary里

4)读取文件:理解系统cache文件、利用系统cache;顺序读写文件;避免不必要的文件关闭、重打开;

5)程序占用:code pages包含不需要使用的代码;静态变量、常量存储在可写页;程序输出一些不必要的symbols;代码没有优化;包含了过多frameworks。

6)内存分配:尽量使用ARC、注意内存泄露

5. 性能优化的几点建议

1) be lazy 尽可能偷懒

2)注意尽快响应用户操作,有一些任务放到后台执行、使用调度队列或者在合适的时间执行

3)使用事件驱动处理方式:好处有尽快响应用户操作、减少cpu使用率、减少应用的工作集、减少电量的使用。

4)提高程序的并发任务:使用调度队列,主线程主要用于处理用户操作更新界面。

5)使用Accelerate Framework

6)更新应用,尽可能地使用最新的framework、api

6. 性能测试工具

1)Instrument:跟踪性能、静态采样、并且图形化展示,文件系统读写、垃圾回收、对象和内存分配、内存泄露、进程和系统级的活动等等。

2)分析工具(注意这些工具不适用于分析iOS app)

分析工具位置:/Applications/Performance Tools,cmd工具位置:/usr/bin.

MallocDebugTracks and analyzes memory allocated in an application. You can use this tool to find memory leaks or analyze memory allocation patterns.

OpenGL Driver MonitorGathers GPU-related performance data, including data related to VRAM usage, video bus traffic, and hardware stalls among others. You can use this information to identify the cause of temporary slowdowns or sporadic hesitations in your OpenGL application.

OpenGL ProfilerCreates a runtime profile of your OpenGL-based application. You can view function statistics and the call-trace history of your application’s OpenGL calls.

SaturnInstruments your code to provide function-level profiling and displays the resulting data graphically. You can use this tool to count events, such as how many times a function is called or an event is sent.

heapLists all malloc-allocated buffers in the heap of a specified process

leaksSearches the memory space of a process for any allocated but unreferenced blocks of memory.

vmmapDisplays the virtual memory regions allocated to a specified process. You can use this tool to analyze the memory usage of your process

3)监视工具(注意这些工具不适用于分析iOS app)

Activity MonitorDisplays common usage statistics relating to memory and CPU usage for the currently running processes. You can also initiate the sampling of a process from this application. This tool provides information that is similar to that of the top tool.

BigTopDisplays system statistics, such as CPU, disk, network and memory usage graphically over time. You can monitor a single process or all processes. This tool provides information that is similar to that of the top and vm_stat tools.

Quartz DebugShows screen updates in real time by briefly flashing the areas being redrawn. You can use this tool to analyze your application’s drawing behavior.

Spin ControlSamples programs that cause the spinning cursor to appear. Leave this program running in the background to catch unresponsive applications at critical moments.

Thread ViewerGraphically displays activity across a range of threads. It provides color-coded timeline views of thread activity and can display backtraces of activity at specific points in time. (Available in OS X v10.5 and earlier.)

fs_usageDisplays an ongoing list of file-system activity, as generated by page faults and calls to file-system functions. You can use this tool to understand the file access patterns of your program.

sc_usageDisplays an ongoing list of system call and page fault statistics.

topDisplays common system usage statistics relating to memory and CPU usage for the currently running processes. This tool updates the information dynamically so that you can see trends at runtime.

4)硬件分析工具(注意这些工具不适用于分析iOS app)

Reggie SELets you examine and modify CPU and PCI configuration registers.

acidA command-line tool that analyzes TT6E instruction traces and presents detailed analyses and histograms. You can use this tool to detect bad instruction sequences, such as misaligned operands, data dependency stalls, and spilled loads.

simg4A command-line tool that is a cycle-accurate simulator of the Motorola 7400 processor. This tool takes TT6 traces as input. (Available in OS X v10.5 and earlier.)

simg5A command-line tool that is a cycle-accurate simulator of the IBM 970 processor. This tool takes TT6 traces as input. (Available in OS X v10.5 and earlier.)

5)一些cmd工具

atosConverts back and forth between a symbol name and the numeric address of that symbol in a running executable.

c2phDisplays the C-structures from an object file along with their member offset values.

gprofProduces execution profiles based on an execution analysis of a program.

malloc_historyShows the malloc allocations performed by a specified process.

nmDisplays the symbol table information for one or more object files.

otoolDisplays the contents of a Mach-O executable in a more human-readable form

pagestuffDisplays information about the logical pages of a Mach-O executable file.

pstructParses the C structures from an object file and displays them along with their member offset values.

sampleProduces an execution profile based on the execution analysis of a program.

vm_statDisplays Mach virtual memory statistics, including the number of active, inactive, wired, and free pages. This tool also displays page fault and other activity information.

7. 性能评估

1)使用top:top工具会显示各个进程的CPU使用率、内存使用、资源使用情况等。BigTop会跟踪cpu等随着时间的变化。

2)instrument工具:他会图像化显示性能数据。

3)quartz debug:用于查看界面绘制代码的性能

4)Spin Control:应用程序响应慢的时候,自动采样数据

文/chichimei(简书作者)

转载原文链接:http://www.jianshu.com/p/5315ecff69a2

著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

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

推荐阅读更多精彩内容

  • 前段时间看一位同学的文章,对知识付费产生了怀疑,感觉自己花那么多钱那么长时间在知识付费上,包括加入007定期写作也...
    凌帅出口必属精品阅读 630评论 0 50
  • 2014年10月15号 姓名遇永亿 公司烟台鸿康 【日精进打卡第四天】 【知~学习】 《六项精进》1遍共5遍 《大...
    遇永亿阅读 192评论 0 0
  • 昨天因为晚上没有呵呵宝宝拿牛肉干,她哭闹她妈,最终她妈在有条件的前提下给她吃了一半,她情绪稳定后说,不要爸爸,我和...
    好皓灏阅读 112评论 0 1