苹果Instruments/Shark性能调试工具概述
在Mac OS X上你可以使用Gprof这样的UNIX工具用于测试程序性能。当然,Apple也有自己的Profiling Tools,用得比较多的是Shark。10.5里还引入了一个基于DTrace的叫Instruments的程序。 Instruments 自Xcode 3.0开始,苹果提供了一种非比寻常的方法来调试应用程序,这就是Instruments。就像它的名字一样(Instruments意为乐器),Instruments提供了一种像苹果的音乐创作软件GarageBand一样的带有时间线的界面,把应用程序的各种性能指标像乐谱一样可视化地记录下来。 Instruments能记录整个应用程序的运行情况,并将所有信息按照时间顺序并排地呈现出来,让你可视化的对比分析各种“乐器”(分析工具)——CPU使用率、网络、文件活动、内存分配等。由于这些信息的显示都按照时间对齐,你可以很快速的定位应用程序运行过程中的某个片段,比如看看上一个CPU占用高峰的时候磁盘正在做什么。如此全局观的审视应用程序运行状态,能帮助您更好的理解各种因果关系,提高软件性能。Instruments借助内建于操作系统中的万能辅助(Universal Access)功能,能够记录下应用程序运行过程中的用户交互操作,然后便可一遍遍地轻松重复同样操作。这样你就能随时为应用程序创建某种特定的测试。在Instruments中记录下应用程序的行为,修改代码,再返回重测看看修改效果。在模版中运行应用程序能让Instruments可视化地并排比对每次运行状态,从而清晰的获知修改代码带来的性能以及内存开销的变化。实际上多数Instruments分析工具都是使用DTrace来实现的,它是系统中全局的分析工具,能全面获取上层应用程序行为到底层操作系统内核的系统活动。你也能创建自己的分析工具,使用Instrument Builder来创建定制的强大分析工具。 Instruments中已经包含了以下六类的分析工具: • 用户事件:追踪用户交互动作的精确事件,如鼠标点击等。
• CPU和进程:监视系统活动、采样、负载图表和线程。
• 内存:跟踪垃圾回收、对象分配和泄露。
• 文件活动:监视磁盘活动,读写和文件锁。
• 网络活动:衡量并记录网络流量。
• 图形:解释OpenGL驱动的内在工作。 Shark Shark可能是Mac开发者最喜欢使用的Profiling Tool了。Shark的User Guide上写到:“默认状态下,Shark通过定期的Interrupt每个处理器并对当前进程、线程、指令地址和函数 Callstack进行取样来创建Profile”。这意味着你并不需要对程序进行任何的修改或重编译就能使用Shark。并且,Shark对程序性能的影响很小,因为“所有的取样工作都在Kernel里完成并且是建立在硬件Interrupts的基础上”。因此,Shark对于找出程序中的“Hot-Spot”特别有帮助。 一般情况下,你只需要使用Shark的Time Profiling功能:运行你要测试的程序,然后运行Shark,选择你的应用程序所在的Process,然后按Start按钮开始取样。当你要结束取样时,按下Stop按钮,这时Shark会生成一个.mshark文件,里面有所有的Profiling数据。直接用Shark打开这个文件你就能开始分析数据了。 Gprof Shark虽然方便易用,但它并不能告诉你同一个函数一共被Call了几次和所有的Caller是谁这样的信息。为了得到这些信息,你需要使用到如Gprof这样的工具。 Gprof的使用比较复杂,简单的来说,你需要到Xcode的编译器设定,打开“Generate Profiling Code”设置。Gprof会在你的代码里添加一些额外的代码来收集信息,所以在你改了Xcode设置以后,你需要重新编译。注意,如果你的应用程序来自多个Project,你需要更改所有你感兴趣的Project的编译设置。接下来,在重新编译了以后,运行你的程序,完成后正常的退出程序(不然Gprof不一定能正确地生成Profiling文件),Gprof会在可执行文件所在的文件夹里建立一个Gmon.out文件。最后,你需要到Terminal里运行Gprof命令来获取可供人分析的文件。 Quartz Composer Quartz Composer是Mac OS 10.4引入的图形开发工具,QC使你能够方便地使用OS X各个级别的图形技术:你可以使用QC方便的整合Cocoa, Quartz 2D, Core Image, OpenGL和Quick Time技术。 一个QC Composition是由许多Patch和其联系构成的。每一个Patch如同一个函数,有Input和Output。Input可以来自于你输入的参数,也可以来自其他Patch的Output。QC自带有许多已经设计好的Patches,有用于捕获鼠标操作的,有用于处理图片的Filter,或是用于将内容渲染到屏幕上的Render等等。
图3.1Patches

将不同的Patch进行奇妙的组合,你会得到意向不到的效果。实际上已有不少DJ/VJ使用QC制作了很酷的根据音乐节奏变化的QC composition。 你可以使用Quick Time直接播放一个Composition文件(.qtz),也可以把其作为一个屏幕保护程序。当然,你也可以使用QCView或者QCLayer将其整合到你的Cocoa应用程序中去。 Text Editors 尽管Xcode已经提供了一个相当不错的Build-In的文本编辑器,但你可能还是偏爱其他的编辑器。在Mac OS X下,你能找到很多其他很棒的编辑器。首先,如果你是一个UNIX程序员,你依然可以使用你最爱的Vi或者Emacs。你可以在Terminal下直接输入Vi或Emacs进入没有图形界面的版本。如果你是Emacs爱好者,你也可以使用Aquamacs Emacs或者Carbon Emacs两个不错的带图形界面的移植版本。 不过,目前Mac OS X上比较火的一个编辑器叫TextMate,这是一个Native Cocoa程序,拥有很多很Cool的功能。特别的,TextMate有很多专门针对Cocoa的Snippet(比如在.mm文件里你只用写Property的名字,然后按Tab键,就可以自动生成相应的Setter和Getter方法),你可以因此节省不少敲代码的时间。同时由于使用了Bundler, TextMate是可扩展,目前已经有许多开发者为其开发了支持各种语言的Bundle。因此,如果你主要工作在Mac OS X平台,同时敢于学习新的快捷键和操作方式,TextMate不失为一个很好的选择。 网页相关开发工具 Apple有自己的一套有很长历史的叫做WebObjects的框架,其支持Ajax,J2EE等技术。全球最大的在线媒体商店iTunes Music Store就是使用WebObjects技术开发的。尽管WebObjects和Java有着密不可分的联系,开发WebObjects应用程序的最佳环境仍然是Xcode。 网页开发方面,Apple比较偏爱的是Ruby-on-Rail,Dojo这样比较新的技术,对其支持也比较好。工具方面,除了Adobe的软件以外,Mac也有像Coda(去年Apple Design Award获奖作品)这样简单易用的网页开发工具。 其他开发工具 前面也提过,Mac OS X能找到大多数跨平台的开发工具,比如Java方面有Eclipse, NetBeans。数据库方面也有Oracle、MySQL、FileMaker等等数据库。这些工具的使用方法与在其他平台类似,这里不做具体介绍。 在脚本语言方面,Mac OS X支持传统的UNIX脚本语言,同时Apple也有自己的Apple Script语言。另外,还有F-Script这样专门针对Cocoa的脚本语言。 另外很值得一提的是一个叫Unity的用于游戏开发的IDE。Unity支持从Maya, 3DS Max, blender等等主流三维软件里导出的文件格式,使用改进过的JavaScript,有着完整的工作流程。而且可以编译适用于Mac, Window甚至网页的游戏或其他交互式程序。
苹果Instruments/Shark性能调试工具概述的更多相关文章
- LoadRunner(二)——性能测试过程概述
参考学习感谢:<精通软件性能测试与LoadRunner实战> 性能测试过程概述 2.1 性能测试的基本过程 2.2 性能测试需求分析 2.3 性能测试计划 2.4 性能测试用例 2.5 测 ...
- 九大Java性能调试工具,必备至少一款
九款Java性能调试工具,有什么更好.更多的工具,欢迎补充. NetBeans Profiler NetBeans中可以找到NetBeans Profiler. NetBeans分析器是NetBean ...
- Linux下性能调试工具运维笔记
作为一名资深的linux运维工程师,为方便了解和追求服务器的高性能,如cpu.内存.io.网络等等使用情况,要求运维工程师必须要熟练运用一些必要的系统性能调试工具,liunx下提供了众多命令方便查看各 ...
- 深入MySQL(四):MySQL的SQL查询语句性能优化概述
关于SQL查询语句的优化,有一些一般的优化步骤,本节就介绍一下通用的优化步骤. 一条查询语句是如何执行的 首先,我们如果要明白一条查询语句所运行的过程,这样我们才能针对过程去进行优化. 参考我之前画的 ...
- Linux性能优化概述
一.Linux性能概述 性能优化是个系统工程,总是牵一发而动全身,它涉及了从程序设计.编程语言,再到系统.存储.网络等各种底层基础设施的方方面面.每一个组件都有可能出问题,而且很有可能多个组件同时出问 ...
- VisualVM 性能分析概述
VisualVM是一个免费的Java应用监控.分析工具. 简单说来,VisualVM是一种集成了多个JDK命令行工具的可视化工具,它能为您提供强大的分析能力.所有这些都是免费的!它囊括的命令行工具包括 ...
- 读书笔记iOS-Core-Animation-Advanced-Techniques,iOS性能调试工具
调试卡顿,除了使用timer profile,还可以使用 OpenGL ES驱动工具 OpenGL ES Driver工具显示的GPU利用率,打开Color Blended Layers 我们给图片和 ...
- ios 性能优化概述
在开发IOS程序的时候,不止是简简单单的把代码堆砌起来,或者说有一个比较好的架构,程序就ok的.还需要在程序性能上进行优化.所谓优化,并非只是简单的优化几个算法,让程序看起来跑的更快.优化是有目标的, ...
- php性能调试工具介绍
php版本:php7 xhprof: xhprof是php5.*下很好的性能测试工具,配合xhprof_html能够图形显示测试结果,基本够用, 但已经没人维护了. tideways: 在php7下, ...
随机推荐
- BNUOJ 2345 Muddy Fields
Muddy Fields Time Limit: 1000ms Memory Limit: 65536KB This problem will be judged on PKU. Original I ...
- php实现设计模式————单例模式
php实现设计模式————单例模式 什么是单例模式 为什么要使用单例模式 php中有哪些方式实现新建一个对象实例 如何阻止这种实例化实现理想的单例模式 代码实现 什么是单例模式 为什么要使用单例模式 ...
- SDWebImage实现分析
该博文来自南峰子的技术博客,文章从下载和缓存俩个大的组件分析到里面一些核心方法的实现,条理清晰,相对于一些一上来就通篇分析实现思路的技术文章, 这篇的讲解思路明确,框架架构也讲的比较清楚.看完这篇再去 ...
- vscode安装插件
十分简单,知道名字叫啥后,直接搜索,安装,就完了,还可以查看自己已经安装了哪些插件. step1 如图.png step2 image.png step 3 去网上查找想要安装的插件的名字 step ...
- CodeForces - 586D Phillip and Trains
这道题是一道搜索题 但是 如果没有读懂或者 或者拐过弯 就很麻烦 最多26个火车 那么每一个周期 (人走一次 车走一次) 就要更改地图 的状态 而且操作复杂 容易超时 出错 利用相对运动 计周期为 人 ...
- OC-runtime 的温习
-.runtime简介 runtime简称运行时,OC就是运行时机制,也就是运行时的一些机制,其中最主要的是消息机制: 对于C语言,函数的调用在编辑的时候,会决定调用哪个函数: 对于OC的函数,属于动 ...
- hdu6212 祖玛(区间DP)
题意 有一个长度为n的01串,我们可以在某个地方插入一个0或者1,那么如果有连续颜色相同的>=3个,那么这段就会消去,两边的合拢.问将所有01串消去,最少需要插入多少个.(n<=200) ...
- JVM内存区域(运行时数据区)划分
前言: 我们每天都在编写Java代码,编译,执行.很多人已经知道Java源代码文件(.java后缀)会被Java编译器编译为字节码文件(.class后缀),然后由JVM中的类加载器加载各个类的字节码文 ...
- Date日期模式
package cn.zmh.Date; import java.text.SimpleDateFormat; import java.util.Date; public class DateDemo ...
- SGU - 311 Ice-cream Tycoon(线段树)
Description You've recently started an ice-cream business in a local school. During a day you have m ...