苹果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甚至网页的游戏或其他交互式程序。
时间: 2024-12-22 08:10:33

苹果Instruments/Shark性能调试工具概述的相关文章

超级简单实用的.NET性能调试工具-----ANTS Performance Profiler

艺术字做到后期,性能成了一个比较大的瓶颈,优化性能的过程中接触了一些.NET性能调试工具,最喜欢的是ANTS Performance Profiler,操作简单,功能也跟我期望的差不多. ANTS Performance Profiler是出自大名鼎鼎的Red Gate,很多人使用过的.NET Reflector就是出自此公司,该公司还出品其他产品,具体请戳http://www.red-gate.com/products/.ANTS Performance Profiler支持.NET平台所有语

mysql性能调试工具profile

我一直在找mysql中有没有类似Oracle 10046类似的工具,可以看到SQL执行的时间消耗在哪里.终于在网上找到一个profile,使用一些,觉得不错. mysql> select version(); +-----------+ | version() | +-----------+ | 5.6.16    | +-----------+ 1 row in set (0.00 sec) mysql> SELECT @@profiling; +-------------+ | @@pro

Oracle Performance Tuning Overview 翻译(Oracle性能优化概述 自己的中英文比对翻译)

Oracle? Database Performance Tuning Guide 10g Release 2 (10.2) B14211-03 Home Book List Contents Index Master Index Contact Us Previous Next PDF · Mobi · ePub 1 性能优化概述 This chapter provides an introduction toperformance tuning and contains the follow

[转帖]九大Java性能调试工具,必备至少一款

九大Java性能调试工具,必备至少一款 https://www.jianshu.com/p/d382bfe6e80e NetBeans Profiler NetBeans中可以找到NetBeans Profiler. NetBeans分析器是NetBeans的扩展,用于为NetBeans IDE提供分析功能.NetBeans IDE是一个开源的集成开发环境.NetBeans IDE支持开发所有Java应用程序类型(Java SE(包括JavaFX),Java ME,Web,EJB和移动应用程序)

11_Oracle_Admin_数据字典和动态性能表概述

一.数据字典 Data Dictionary 存储的是控制信息:如有多少张表,表的结构等等 Performance tables: 也称为DynamicPerformance tables,即动态性能表,反应了系统的性能特征,是动态的,以表的形式展示,但实际上展示的是内存信息. PL/SQL packages:帮助完成数据库日常管理的程序. Database event triggers:事件触发器,如插入数据时会触发相应的事件. 任何数据库都会有一个SYSTEM tablespace,10g以

Java程序性能优化-概述

前言 这两天在看<Java程序性能优化>这本书,将我学到的书上好的东西分享给大家.做过开发的人应该或多或少都碰到过性能问题,遇到性能问题你是怎么做的呢?你能看懂程序的性能吗?本篇给大家讲下如何看懂程序的性能及性能的参考指标. 正题 程序性能的表现方式: 1.执行速度:程序的反映是否迅速,响应时间是否足够短. 执行速度可以受到多方面的影响,比如逻辑写的有问题,查询数据量大,网络问题等等. 2.内存分配:内存分配是否合理,是否过多地消耗内存或者存在泄漏. 要根据程序的运行情况及服务器内存大小合理分

VisualVM 性能分析概述

VisualVM是一个免费的Java应用监控.分析工具. 简单说来,VisualVM是一种集成了多个JDK命令行工具的可视化工具,它能为您提供强大的分析能力.所有这些都是免费的!它囊括的命令行工具包括jstat, JConsole, jstack, jmap 和 jinfo,这些工具与JDK的标准版本是一致的. 你可以使用VisualVM生成和分析海量数据.跟踪内存泄漏.监控垃圾回收器.执行内存和CPU分析,同时它还支持在MBeans上进行浏览和操作.尽管VisualVM自身要在JDK6这个版本

开源的Delphi性能调试工具

官网:http://dbg-spider.net/源码:https://github.com/yavfast/dbg-spider Real time profiler for Delphi applications:?  Detailed debug information (internal, TDS, MAP)?  Display information for multi-threaded applications?  Timeline diagram for process execu

tuning-primer.sh 性能调试工具的使用

下载地址: wget http://www.day32.com/MySQL/tuning-primer.sh # chmod +x  tuning-primer.sh # yum -y install bc # ./tuning-primer.sh 注意粗体字和有颜色的字,并按照给出的建议修改相应的值 -- MYSQL PERFORMANCE TUNING PRIMER -- - By: Matthew Montgomery - MySQL Version 5.6.32 x86_64 Uptim