蘋果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甚至網頁的遊戲或其餘交互式程序。
相關文章
相關標籤/搜索