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

图3.1Patches

  1. 将不同的Patch进行奇妙的组合,你会得到意向不到的效果。实际上已有不少DJ/VJ使用QC制作了很酷的根据音乐节奏变化的QC composition
  2.  
  3. 你可以使用Quick Time直接播放一个Composition文件(.qtz),也可以把其作为一个屏幕保护程序。当然,你也可以使用QCView或者QCLayer将其整合到你的Cocoa应用程序中去。 
  4.  
  5. Text Editors
  6.  
  7. 尽管Xcode已经提供了一个相当不错的Build-In的文本编辑器,但你可能还是偏爱其他的编辑器。在Mac OS X下,你能找到很多其他很棒的编辑器。首先,如果你是一个UNIX程序员,你依然可以使用你最爱的Vi或者Emacs。你可以在Terminal下直接输入ViEmacs进入没有图形界面的版本。如果你是Emacs爱好者,你也可以使用Aquamacs Emacs或者Carbon Emacs两个不错的带图形界面的移植版本。
  8.  
  9. 不过,目前Mac OS X上比较火的一个编辑器叫TextMate,这是一个Native Cocoa程序,拥有很多很Cool的功能。特别的,TextMate有很多专门针对CocoaSnippet(比如在.mm文件里你只用写Property的名字,然后按Tab键,就可以自动生成相应的SetterGetter方法),你可以因此节省不少敲代码的时间。同时由于使用了Bundler, TextMate是可扩展,目前已经有许多开发者为其开发了支持各种语言的Bundle。因此,如果你主要工作在Mac OS X平台,同时敢于学习新的快捷键和操作方式,TextMate不失为一个很好的选择。
  10.  
  11. 网页相关开发工具
  12.  
  13. Apple有自己的一套有很长历史的叫做WebObjects的框架,其支持AjaxJ2EE等技术。全球最大的在线媒体商店iTunes Music Store就是使用WebObjects技术开发的。尽管WebObjectsJava有着密不可分的联系,开发WebObjects应用程序的最佳环境仍然是Xcode
  14.  
  15. 网页开发方面,Apple比较偏爱的是Ruby-on-RailDojo这样比较新的技术,对其支持也比较好。工具方面,除了Adobe的软件以外,Mac也有像Coda(去年Apple Design Award获奖作品)这样简单易用的网页开发工具。 
  16.  
  17. 其他开发工具
  18.  
  19. 前面也提过,Mac OS X能找到大多数跨平台的开发工具,比如Java方面有Eclipse, NetBeans。数据库方面也有OracleMySQLFileMaker等等数据库。这些工具的使用方法与在其他平台类似,这里不做具体介绍。
  20.  
  21. 在脚本语言方面,Mac OS X支持传统的UNIX脚本语言,同时Apple也有自己的Apple Script语言。另外,还有F-Script这样专门针对Cocoa的脚本语言。
  22.  
  23. 另外很值得一提的是一个叫Unity的用于游戏开发的IDEUnity支持从Maya, 3DS Max, blender等等主流三维软件里导出的文件格式,使用改进过的JavaScript,有着完整的工作流程。而且可以编译适用于Mac, Window甚至网页的游戏或其他交互式程序。

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

  1. LoadRunner(二)——性能测试过程概述

    参考学习感谢:<精通软件性能测试与LoadRunner实战> 性能测试过程概述 2.1 性能测试的基本过程 2.2 性能测试需求分析 2.3 性能测试计划 2.4 性能测试用例 2.5 测 ...

  2. 九大Java性能调试工具,必备至少一款

    九款Java性能调试工具,有什么更好.更多的工具,欢迎补充. NetBeans Profiler NetBeans中可以找到NetBeans Profiler. NetBeans分析器是NetBean ...

  3. Linux下性能调试工具运维笔记

    作为一名资深的linux运维工程师,为方便了解和追求服务器的高性能,如cpu.内存.io.网络等等使用情况,要求运维工程师必须要熟练运用一些必要的系统性能调试工具,liunx下提供了众多命令方便查看各 ...

  4. 深入MySQL(四):MySQL的SQL查询语句性能优化概述

    关于SQL查询语句的优化,有一些一般的优化步骤,本节就介绍一下通用的优化步骤. 一条查询语句是如何执行的 首先,我们如果要明白一条查询语句所运行的过程,这样我们才能针对过程去进行优化. 参考我之前画的 ...

  5. Linux性能优化概述

    一.Linux性能概述 性能优化是个系统工程,总是牵一发而动全身,它涉及了从程序设计.编程语言,再到系统.存储.网络等各种底层基础设施的方方面面.每一个组件都有可能出问题,而且很有可能多个组件同时出问 ...

  6. VisualVM 性能分析概述

    VisualVM是一个免费的Java应用监控.分析工具. 简单说来,VisualVM是一种集成了多个JDK命令行工具的可视化工具,它能为您提供强大的分析能力.所有这些都是免费的!它囊括的命令行工具包括 ...

  7. 读书笔记iOS-Core-Animation-Advanced-Techniques,iOS性能调试工具

    调试卡顿,除了使用timer profile,还可以使用 OpenGL ES驱动工具 OpenGL ES Driver工具显示的GPU利用率,打开Color Blended Layers 我们给图片和 ...

  8. ios 性能优化概述

    在开发IOS程序的时候,不止是简简单单的把代码堆砌起来,或者说有一个比较好的架构,程序就ok的.还需要在程序性能上进行优化.所谓优化,并非只是简单的优化几个算法,让程序看起来跑的更快.优化是有目标的, ...

  9. php性能调试工具介绍

    php版本:php7 xhprof: xhprof是php5.*下很好的性能测试工具,配合xhprof_html能够图形显示测试结果,基本够用, 但已经没人维护了. tideways: 在php7下, ...

随机推荐

  1. Oracle常用内置数据表查询

    Oracle 查询库中所有表名.字段名.字段名说明,查询表的数据条数.表名.中文表名. 查询所有表名:select t.table_name from user_tables t;查询所有字段名:se ...

  2. Solr Admin管理界面使用说明

    Notice:本说明基于Solr6.4.2. 本文讨论的是如何使用Solr Admin UI. 一级菜单 图1.SolrCloud模式 图2.单机Solr模式 Logging:展示Solr的日志,不用 ...

  3. Wooden Sticks---hdu1051(最长上升子序列)

    http://acm.hdu.edu.cn/showproblem.php?pid=1051 Problem Description There is a pile of n wooden stick ...

  4. EXTJS中整合tinymce的富文本编辑器,添加上传图片功能

    提供部分代码.Ext.create('Ext.window.Window', { id: 'wind', title: 'CRUD窗口', modal: true, height: 800, widt ...

  5. Spring Boot使用Feign客户端调用远程服务时出现:timed-out and no fallback available,failed and no fallback available的问题解决

    timed-out and no fallback available: 这个错误基本是出现在Hystrix熔断器,熔断器的作用是判断该服务能不能通,如果通了就不管了,调用在指定时间内超时时,就会通过 ...

  6. @Aspect注解无效

    Pointcut的execution配置正确的话,检查下,是否加了以下jar包 <!-- http://mvnrepository.com/artifact/org.aspectj/aspect ...

  7. BloomFilter学习

    看大数据面试题,看到BloomFilter,找了篇文章学习一下: http://www.cnblogs.com/heaad/archive/2011/01/02/1924195.html Bloom ...

  8. 【APUE】【转】守护进程编写

    http://blog.csdn.net/zg_hover/article/details/2553321 守护进程(Daemon)是运行在后台的一种特殊进程.它独立于控制终端并且周期性地执行某种任务 ...

  9. Office EXCEL 中单元格怎么打斜线

    右击单元格,然后设置单元格格式,然后添加需要的边框     注意里面的文字有讲究,比如我要右上角显示Value,左下角显示Payload,则需要先输一堆空格,然后输入Value,把Value挤到右边去 ...

  10. 战五渣系列之八(绝杀AOP)

    开发不用aop.程序猿的人生该会浪费多少时间.我想是时候让程序猿打败alpha狗了.程序猿解救世界. 1.概念 面向切面编程.这意味着,一切不在流水线上的东西.包含权限.日志.缓存.校验.资源.事物. ...