對應用程式開發人員來說,最困難的問題之一就是建立流暢且無故障的動畫。如果系統同時執行耗用大量資源的背景工作,偵錯作業會更加困難。很難判斷故障是由應用程式還是系統造成。不過,剖析器工具可協助您找出不良行為的可能來源。
在 ChromeOS 上算繪
經過微調的應用程式 (例如遊戲) 通常會使用雙重緩衝區,盡可能縮短使用者回應時間。不過,許多因素仍可能導致效能降低。舉例來說,如果算繪影格的時間過長,算繪結果就無法用於下一個緩衝區交換,因此系統會重複顯示前一個影格。
這樣一來,算繪器就無法開始算繪下一個影格,導致更多問題。Android 行動開發人員對這種情況並不陌生。如果應用程式在 ChromeOS 上執行,情況會更加複雜。
在電腦上執行的應用程式不會直接轉譯到螢幕的顯示畫面格,而是將資料算繪至紋理。通常會有許多應用程式,每個應用程式都會將圖像算繪到紋理中。系統會使用 Compositor 將所有紋理合併為單一桌面圖片,在畫面上建構檢視區塊。
合成器會在背景以透明方式運作,但會導入一幀的時間延遲,盡量使用 GPU 管道。這項延遲可緩和系統效能波動,並有助於平衡非對稱負載。
作業系統忙碌時,GPU 可能會受到擠壓,導致影格轉譯和顯示在螢幕上之間出現延遲。視硬體而定,系統可能會使用四重緩衝區來補償。即使緩衝區較深,繪圖管線仍可能發生故障。
ARC 圖形追蹤器
ChromeOS 具有剖析工具,可顯示緩衝區在系統中的滲透情形、記憶體交換時間、CPU/GPU 的忙碌程度,以及應用程式在特定時間的活動,如下圖所示:
設定分析器
如要使用分析器,必須執行 M75 以上版本。為獲得最佳效果,請使用 Intel 裝置。
使用剖析器前,請先在應用程式中加入追蹤記錄。在您想加入追蹤記錄的程式碼中加入 Trace.traceCounter(Trace.TRACE_TAG_GRAPHICS, "Event", <number>);。使用以 customTrace 前置字串開頭的 Event。追蹤訊息中不會顯示前置字元。
如要設定分析器,請按照下列步驟操作:
- 開啟開發人員模式。
- 開啟 Chrome 設定,並啟用 ARC 圖像緩衝區視覺化工具。
- 前往
chrome://arc-graphics-tracing
執行分析器
- 選取「stop on glitch」。
- 執行 Android 應用程式。
- 在 Android 應用程式處於啟用狀態並取得焦點時,按下
Control+Shift+G。
發生故障時,系統會彈出瀏覽器視窗。 使用 W 和 S 鍵縮放時間軸。