對於Android用戶來說,無論你用的什么品牌的手機,在開發者選項中都能發現“玄學曲線”的開關,之所以稱其為玄學曲線,還是因為它被很多網友用於測試一個說不清道不明的東西——流暢度。到底多流暢才叫流暢,多卡才叫卡,標准是什么?用玄學曲線判斷流暢度到底靠不靠譜兒?今天,就教你如何看懂這玄學曲線。
說到玄學曲線其實它的真名叫做“Profile GPU Rendering”,在中文安卓系統下譯為“GPU顯示配置文件”或“GPU呈現模式分析”等,根據不同廠商定制系統叫法稍有不同。在開啟開發者模式后,找到該條目並選擇第二項“條形顯示”即可看到,不少網友樂此不疲將該曲線發到網上展示,時不時還能看到配字“我的XX這么貴,刷微博竟然這么卡”,或是“為什么剛更新了Android 5.0怎么曲線還這么高?”。其實,一些網友並沒有完全理解它而已,有時曲線蹦的高,並不代表卡了。
開啟玄學曲線后,我們能看到屏幕下方出現連續的柱狀圖,每一根都由紅、黃、藍三色組成,它們分別代表不同含義后面詳細講。除了曲線外,在屏幕上你還可以看到一根水平的綠線,要看懂玄學曲線就要從這根綠線說起。
首先,在Android系統中是以每秒60幀為滿幀的,那么只要將1秒÷60幀,就能得出每幀為16毫秒(ms)時為滿幀的界限,每幀快於16ms即為流暢,而這根綠線所標示的高度即為16ms線,低於綠線即為流暢。
然后,屏幕下方的柱狀圖每一根代表一幀,其高度表示“渲染這一幀耗時”,隨着手機屏幕界面的變化,柱狀圖會持續刷新每幀用時的具體情況(通過高度表示)。那么,當柱狀圖高於綠線,是不是就說明我卡了呢?其實這不完全正確,這里就要開始分析組成每一根柱狀圖不同顏色所代表的含義了。
CPU無法直接將命令發給GPU 首先要明白,GPU要繪制什么樣的視圖是需要CPU發出指令的,但CPU不會直接告訴GPU怎么做,而是會先將這一命令存入一個“盒子”,在盒子中會形成一個列表,然后GPU從盒子中取出命令進行視圖的渲染繪制。
明白了上面的過程,下面就該說說圖中不同顏色到底代表了什么含義。
刷淘寶時可見紅色部分很高
紅色代表了“執行時間”,它指的是Android渲染引擎執行盒子中這些繪制命令的時間,假如當前界面的視圖越多,那么紅色便會“跳”得越高。實際使用中,比如我們平時刷淘寶App時遇到出現多張縮略圖需要加載時,那么紅色會突然跳很高,但是此時你的頁面滑動其實是流暢的,雖然等了零點幾秒圖片才加載出來,但其實這可能並不意味着你卡住了。
黃色通常較短,它代表着CPU通知GPU“你已經完成視圖渲染了”,不過在這里CPU會等待GPU的回話,當GPU說“好的知道了”,才算完事兒。假如橙色部分很高的話,說明當前GPU過於忙碌,有很多命令需要去處理,比如Android淘寶客戶端,紅色黃色通常會很高。
藍色。假如想通過玄學曲線來判斷流暢度的話,其實藍色的參考意義是較大的。藍色代表了視圖繪制所花費的時間,表示視圖在界面發生變化(更新)的用時情況。當它越短時,即便是體驗上更接近“絲滑”,當他越長時,說明當前視圖較復雜或者無效需要重繪,即我們通常說的“卡了”。
理解了玄學曲線不同顏色代表的意義,看懂玄學曲線就不難了。一般情況下,當藍色低於綠線時都不會出現卡頓,但是想要追求真正的絲般順滑那當然還是三色全部處於綠線以下最為理想。
最后,玄學曲線到底適不適合判斷手機的流暢度呢?其實,就如開啟時他被藏在“開發者選項中”那樣,它其實是用來幫助Android開發者找到界面中渲染問題的小工具,當他們發現曲線出現異常時,就該去做調整和優化了,為用戶提供更好體驗。所以,將Profile GPU Rendering用於測試手機流暢度其實是個小誤區,你的手機不流暢也可能是當前視圖不合理所致,並非性能不足。
特別注意:










