亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

一文讀懂直播卡頓優(yōu)化那些事兒 如何解決直播卡頓( 二 )



  1. Vsync 調(diào)度:很多同學(xué)的一個(gè)認(rèn)知誤區(qū)在于認(rèn)為 vsync 是每 16ms 都會(huì)有的 , 但是其實(shí) vsync 是需要調(diào)度的 , 沒有調(diào)度就不會(huì)有回調(diào);
  2. 消息調(diào)度:主要是 doframe 的消息調(diào)度 , 如果消息被阻塞 , 會(huì)直接造成卡頓;
  3. input 處理:觸摸事件的處理;
  4. 動(dòng)畫處理:animator 動(dòng)畫執(zhí)行和渲染;
  5. view 處理:主要是 view 相關(guān)的遍歷和三大流程;
  6. measure、layout、draw:view 三大流程的執(zhí)行;
  7. DisplayList 更新:view 硬件加速后的 draw op;
  8. OpenGL 指令轉(zhuǎn)換:繪制指令轉(zhuǎn)換為 OpenGL 指令;
  9. 指令 buffer 交換:OpenGL 的指令交換到 GPU 內(nèi)部執(zhí)行;
  10. GPU 處理:GPU 對(duì)數(shù)據(jù)的處理過(guò)程;
  11. layer 合成:surface buffer 合成屏幕顯示 buffer 的流程;
  12. 光柵化:將矢量圖轉(zhuǎn)換為位圖;
  13. Display:顯示控制;
  14. buffer 切換:切換屏幕顯示的幀 buffer;
Google 將這個(gè)過(guò)程劃分為:其他時(shí)間/VSync 延遲、輸入處理、動(dòng)畫、測(cè)量/布局、繪制、同步和上傳、命令問題、交換緩沖區(qū) 。也就是我們常用的 GPU 嚴(yán)格模式 , 其實(shí)道理是一樣的 。到這里 , 我們也就回答出來(lái)了第二個(gè)問題:16ms 內(nèi)都需要完成什么?
準(zhǔn)確地說(shuō) , 這里仍可以進(jìn)一步細(xì)化:16ms 內(nèi)完成 APP 側(cè)數(shù)據(jù)的生產(chǎn);16ms 內(nèi)完成 sf layer 的合成

View 的視覺效果正是通過(guò)這一整條復(fù)雜的鏈路一步步展示出來(lái)的 , 有了這個(gè)前提 , 那就可以得出一個(gè)結(jié)論:上述任意鏈路發(fā)生卡頓 , 均會(huì)造成卡頓 。
2.3 生產(chǎn)者和消費(fèi)者
我們?cè)倩氐?Vsync 的話題 , 消費(fèi) Vsync 的雙方分別是 App 和 sf , 其中 App 代表的是生產(chǎn)者 , sf 代表的是消費(fèi)者 , 兩者交付的中間產(chǎn)物則是 surface buffer 。
再具體一點(diǎn) , 生產(chǎn)者大致可以分為兩類 , 一類是以 window 為代表的頁(yè)面 , 也就是我們平時(shí)所看到的 view 樹這一套;另一類是以視頻流為代表的可以直接和 surface 完成數(shù)據(jù)交換的來(lái)源 , 比如相機(jī)預(yù)覽等 。
對(duì)于一般的生產(chǎn)者和消費(fèi)者模式 , 我們知道會(huì)存在相互阻塞的問題 。比如生產(chǎn)者速度快但是消費(fèi)者速度慢 , 亦或是生產(chǎn)者速度慢消費(fèi)者速度快 , 都會(huì)導(dǎo)致整體速度慢且造成資源浪費(fèi) 。所以 Vsync 的協(xié)同以及雙緩沖甚至三緩沖的作用就體現(xiàn)出來(lái)了 。
思考一個(gè)問題:是否緩沖的個(gè)數(shù)越多越好?過(guò)多的緩沖會(huì)造成什么問題?

答案是會(huì)造成另一個(gè)嚴(yán)重的問題:lag , 響應(yīng)延遲
這里結(jié)合 view 的一生 , 我們可以把兩個(gè)流程合在一起 , 讓我們的視角再高一層:
2.4 機(jī)制上的保護(hù)這里我們來(lái)回答第三個(gè)問題 , 從系統(tǒng)的渲染架構(gòu)上來(lái)說(shuō) , 機(jī)制上的保護(hù)主要有幾方面:
  1. Vsync 機(jī)制的協(xié)同;
  2. 多緩沖設(shè)計(jì);
  3. surface 的提供;
  4. 同步屏障的保護(hù);
  5. 硬件繪制的支持;
  6. 渲染線程的支持;
  7. GPU 合成加速;
這些機(jī)制上的保護(hù)在系統(tǒng)層面最大程度地保障了 App 體驗(yàn)的流暢性 , 但是并不能幫我們徹底解決卡頓 。為了提供更加流暢的體驗(yàn) , 一方面 , 我們可以加強(qiáng)系統(tǒng)的機(jī)制保護(hù) , 比如 FWatchDog;另一方面 , 需要我們從 App 的角度入手 , 治理應(yīng)用內(nèi)的卡頓問題 。


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專業(yè)人士給予相關(guān)指導(dǎo)!

「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助: