在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甚至网页的游戏或其余交互式程序。