在macOS上有個專門來調(diào)試圖形性能的工具,叫做,Quartz Debug 。它存在于一個叫做Additional_Tools_for_Xcode的擴(kuò)展工具包中,每個xcode版本都有對應(yīng)的擴(kuò)展工具包dmg,如xcode10.1,需要下載Additional_Tools_for_Xcode_10.1,可以在這里下載到。本文主要內(nèi)容參考《iOS和macOS性能優(yōu)化:Cocoa、Cocoa Touch、Objective-C和Swift》,Quartz Debug提供了許多工具來幫助您調(diào)試應(yīng)用程序中與圖形相關(guān)的問題。下面討論Quartz調(diào)試的特性。
Quartz Debug Settings

使用此面板切換常用加速和調(diào)試選項。提供以下選擇:
- Enable Quartz Debug
啟用/禁用所有選項。
- Disable 2D Acceleration
禁用所有2D加速。
所謂2D加速是指2D圖形硬件加速,即開啟GPU。強(qiáng)制進(jìn)行GPU渲染,指的是在CPU性能不足或者想要節(jié)省CPU資源的情況下,強(qiáng)制系統(tǒng)使用GPU對系統(tǒng)和軟件的UI進(jìn)行渲染,由于在圖形方面GPU相比CPU具有天然優(yōu)勢,所以此情況下使用GPU渲染會得到更加流暢的界面體驗;
- Autoflush drawing
每次繪圖操作后刷新內(nèi)容。
會關(guān)閉合并內(nèi)存的訪問模式,所以每個繪制操作都會直接展示在屏幕上(如果開啟Flash identical screen updates和Flash screen updates2個選項,可能會造成閃爍),這會產(chǎn)生更多的干擾信息,但是這樣會將繪制過程劃分的更細(xì),展示的矩形越多,就越能讓開發(fā)者了解系統(tǒng)是如何繪制的以及繪制過程發(fā)生了哪些變化。
- Flash screen updates
在屏幕區(qū)域更新之前用黃色高亮顯示(正常)。DisableUpdate下的區(qū)域被涂成橙色。
該選項能讓你區(qū)分出那些刷新次數(shù)過于頻繁的地方。打開該選項可能會產(chǎn)生一些干擾數(shù)據(jù)。
- Flash identical screen updates
用紅色高亮顯示冗余屏幕更新。冗余更新是指重新繪制未更改像素的情況。
開啟該選項后,Quartz會用紅色矩形塊標(biāo)注屏幕中重復(fù)刷新相同內(nèi)容的區(qū)域,這表示紅色區(qū)塊的繪制操作是多余的,應(yīng)該被刪除。
- No delay after flash
移除閃爍屏幕更新后的延遲。
- Show tracking rectangles
跟蹤矩形用綠色表示?;顒痈櫨匦蔚妮喞羌t色的。
- Vertical Sync
切換垂直波束同步開關(guān)的窗口服務(wù)器屏幕更新。
UI Resolution
UI解析窗口允許控制用于用戶界面的當(dāng)前縮放因子。設(shè)置完成后,將立即向Dock應(yīng)用新的分辨率,但是應(yīng)用程序需要重新啟動才能獲取新的設(shè)置。
Framemeter

幀表顯示每秒屏幕更新的次數(shù)。還顯示了CPU使用情況。幀表輸出也可以在Quartz Debug Dock圖標(biāo)中獲得。
Dock Icon
可以將dock圖標(biāo)配置為顯示幀表和石英狀態(tài)。右鍵單擊dock圖標(biāo)或選擇Tools -> dock來配置這些選項
- Show Framemeter History
幀速率繪制在每秒更新10次的圖形上,并顯示在dock中應(yīng)用程序圖標(biāo)的位置。該圖由當(dāng)前FPS讀取值著色,紅線表示更新速率為0……一條黃線31……一條綠線61……90 fps。
應(yīng)該注意,隨著Quartz Debug的運(yùn)行,應(yīng)用程序與平常的運(yùn)行狀態(tài)有一點(diǎn)區(qū)別,繪制這些額外的矩形會造成不小的開銷,你甚至可以感覺到屏幕在刷新的過程中有一些延遲。開啟一個Flash選項,然后嘗試拖拽窗口,這時不僅能看到有很多閃爍效果,拖拽的過程也變的很遲鈍。關(guān)閉延遲能讓性能恢復(fù)正常,但閃爍會導(dǎo)致肉眼難以識別屏幕上的情況。
參考資料:
《iOS和macOS性能優(yōu)化:Cocoa、Cocoa Touch、Objective-C和Swift》
《Quartz Debug 4.0 Help(位于Quartz Debug 的help中)》