玄學曲線並不玄 教你如何看懂GPU呈現

2021-07-23 13:09:31 字數 2289 閱讀 6370

對於android使用者來說,無論你用的什麼品牌的手機,在開發者選項中都能發現「玄學曲線」的開關,之所以稱其為玄學曲線,還是因為它被很多網友用於測試乙個說不清道不明的東西——流暢度。到底多流暢才叫流暢,多卡才叫卡,標準是什麼?用玄學曲線判斷流暢度到底靠不靠譜兒?今天,就教你如何看懂這玄學曲線。

lg nexus 5x(移動4g)

產品綜述|(92)|引數|**|點評(15)

本地參考底價

2800.00元

↓10%

說到玄學曲線其實它的真名叫做「profile gpu rendering」,在中文安卓系統下譯為「gpu顯示配置檔案」或「gpu呈現模式分析」等,根據不同廠商定製系統叫法稍有不同。在開啟開發者模式後,找到該條目並選擇第二項「條形顯示」即可看到,不少網友樂此不疲將該曲線發到網上展示,時不時還能看到配字「我的xx這麼貴,刷微博竟然這麼卡」,或是「為什麼剛更新了android 5.0怎麼曲線還這麼高?」。其實,一些網友並沒有完全理解它而已,有時曲線蹦的高,並不代表卡了。

開啟玄學曲線後,我們能看到螢幕下方出現連續的柱狀圖,每一根都由紅、黃、藍三色組成,它們分別代表不同含義後面詳細講。除了曲線外,在螢幕上你還可以看到一根水平的綠線,要看懂玄學曲線就要從這根綠線說起。

綠色水平線標示了16毫秒的位置

首先,在android系統中是以每秒60幀為滿幀的,那麼只要將1秒÷60幀,就能得出每幀為16毫秒(ms)時為滿幀的界限,每幀快於16ms即為流暢,而這根綠線所標示的高度即為16ms線,低於綠線即為流暢。

然後,螢幕下方的柱狀圖每一根代表一幀,其高度表示「渲染這一幀耗時」,隨著手機螢幕介面的變化,柱狀圖會持續重新整理每幀用時的具體情況(通過高度表示)。那麼,當柱狀圖高於綠線,是不是就說明我卡了呢?其實這不完全正確,這裡就要開始分析組成每一根柱狀圖不同顏色所代表的含義了。

cpu無法直接將命令發給gpu

首先要明白,gpu要繪製什麼樣的檢視是需要cpu發出指令的,但cpu不會直接告訴gpu怎麼做,而是會先將這一命令存入乙個「盒子」,在盒子中會形成乙個列表,然後gpu從盒子中取出命令進行檢視的渲染繪製。

明白了上面的過程,下面就該說說圖中不同顏色到底代表了什麼含義。

刷**時可見紅色部分很高

黃色部分通常較短

黃色通常較短,它代表著cpu通知gpu「你已經完成檢視渲染了」,不過在這裡cpu會等待gpu的回話,當gpu說「好的知道了」,才算完事兒。假如橙色部分很高的話,說明當前gpu過於忙碌,有很多命令需要去處理,比如android**客戶端,紅色黃色通常會很高。

藍線過長說明掉幀了

藍色。假如想通過玄學曲線來判斷流暢度的話,其實藍色的參考意義是較大的。藍色代表了檢視繪製所花費的時間,表示檢視在介面發生變化(更新)的用時情況。當它越短時,即便是體驗上更接近「絲滑」,當他越長時,說明當前檢視較複雜或者無效需要重繪,即我們通常說的「卡了」。

理解了玄學曲線不同顏色代表的意義,看懂玄學曲線就不難了。一般情況下,當藍色低於綠線時都不會出現卡頓,但是想要追求真正的絲般順滑那當然還是三色全部處於綠線以下最為理想。

gif圖會影響玄學曲線

最後,玄學曲線到底適不適合判斷手機的流暢度呢?其實,就如開啟時他被藏在「開發者選項中」那樣,它其實是用來幫助android開發者找到介面中渲染問題的小工具,當他們發現曲線出現異常時,就該去做調整和優化了,為使用者提供更好體驗。所以,將profile gpu rendering用於測試手機流暢度其實是個小誤區,你的手機不流暢也可能是當前檢視不合理所致,並非效能不足。