渲染性能到底怎么表現(xiàn)?
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名與空間、網(wǎng)站空間、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、西區(qū)網(wǎng)站維護(hù)、網(wǎng)站推廣。應(yīng)用設(shè)計(jì)師們?yōu)榱俗寫(xiě)?yīng)用呈現(xiàn)很棒的使用體驗(yàn),對(duì)界面進(jìn)行渲染,但是這些華麗的圖片及轉(zhuǎn)場(chǎng),會(huì)使應(yīng)用出現(xiàn)卡屏、運(yùn)行不流暢的用戶體驗(yàn)(比如切換界面、滑動(dòng)滾動(dòng)條等)。
2.了解下渲染性能的原理
系統(tǒng)會(huì)在每16ms內(nèi)對(duì)你的活動(dòng)進(jìn)行重新繪制,這意味著你必須在16ms內(nèi)完成屏幕的更新(包括計(jì)算、繪圖等操作),也就是16ms一幀。但是如果你超過(guò)了一幀超過(guò)16ms(比如32ms),就會(huì)導(dǎo)致丟幀現(xiàn)象,也就是32ms內(nèi),你依然停在之前那個(gè)畫(huà)面,這樣的丟幀就會(huì)導(dǎo)致界面出現(xiàn)卡頓。
3.渲染性能與GPU、CPU的關(guān)系
當(dāng)你的應(yīng)用需要將按鈕,輸入框等繪制到屏幕時(shí),需要在CPU上將他們轉(zhuǎn)換成像素和紋理,然后送至GPU(圖形處理器)進(jìn)行光柵化,然后呈現(xiàn)到屏幕上。
以上方法速度較慢,我們可以通過(guò)Opengles Api 加快速度,Opengles Api可以將上傳的內(nèi)容留在GPU,然后下次你要繪制時(shí),只要參考GPU中已經(jīng)存在的網(wǎng)格,告訴Opengles Api怎么繪制就行了。
5.android繪圖基本過(guò)程
android系統(tǒng)在你需要為應(yīng)用繪圖之前,都會(huì)將xml的文件轉(zhuǎn)為為GPU可接受的文件,然后在屏幕上渲染。但是,這要借助內(nèi)部對(duì)象displaylist(顯示列表),它包括了GPU需要渲染的所有信息,還包括open GL ES 渲染所需要的所有命令。
首次繪圖,會(huì)先生成一個(gè)顯示列表,然后再提交命令至GPU,來(lái)執(zhí)行顯示列表。
如果將來(lái)還像渲染這個(gè)視圖,比如只是在屏幕上換了位置,我們只需要再次執(zhí)行顯示列表。
如果將來(lái)我們的視圖發(fā)生改變,之前的顯示列表可能不在有效,我們就需要重新生成顯示列表,然后再次去執(zhí)行,然后在屏幕上顯示。
當(dāng)視圖、布局發(fā)生改變時(shí),會(huì)產(chǎn)生額外的步驟,比如按鈕大小發(fā)生改變,或是布局位置發(fā)生變化,那么父容器都將啟動(dòng)相關(guān)視圖進(jìn)行位置的重新計(jì)算和編排,這就會(huì)導(dǎo)致額外的渲染。如果有大量的視圖需要更改,這就會(huì)導(dǎo)致大量的性能問(wèn)題,所以,你需要的就是布局失效最小化。
6.了解下VSYNC
VSYNC:即垂直同步,理解之前,我們先弄懂下兩個(gè)概念。
刷新頻率:即顯示器每秒的刷新速度(次數(shù))。
幀頻:GPU每秒可以繪制的幀數(shù)。
GPU獲取數(shù)據(jù)進(jìn)行繪制,然后在屏幕上顯示。
如果幀頻大于顯示器刷新頻率,就會(huì)造成畫(huà)面撕裂等問(wèn)題。
以上問(wèn)題的愿意在于,GPU繪制的每一個(gè)新的幀會(huì)覆蓋上一個(gè)幀,從頂部開(kāi)始。現(xiàn)在,當(dāng)屏幕刷新時(shí),它不知道緩沖是從什么時(shí)候開(kāi)始的,因此他可能從GPU當(dāng)中獲取的幀是未完成的。這就意味著有著上一幀的一半和當(dāng)前幀的一半,解決這個(gè)問(wèn)題就要采用雙緩沖技術(shù),實(shí)際上,GPU將幀繪制到內(nèi)存后(也稱(chēng)為后臺(tái)緩沖),還會(huì)復(fù)制一份到內(nèi)存副區(qū)域(幀緩沖區(qū))。當(dāng)他繪制第二幀到內(nèi)存的時(shí)候,幀緩沖區(qū)不收影響。當(dāng)屏幕刷新時(shí),他會(huì)從幀緩沖區(qū)刷新,這就要用到VSYNC了。VSYNC避免了屏幕刷新時(shí),從后臺(tái)緩沖區(qū)復(fù)制到幀緩沖區(qū)。
所以,幀頻大于屏幕刷新頻率是理想的,但是如果幀頻小于屏幕刷新頻率,就會(huì)出現(xiàn)問(wèn)題。這樣會(huì)導(dǎo)致刷新時(shí),屏幕左右兩側(cè)的幀顯示的一樣。
例如,當(dāng)幀頻大于屏幕刷新頻率時(shí),應(yīng)用是流暢的,當(dāng)幀頻突然小于刷新頻率時(shí),就會(huì)出現(xiàn)卡頓、延遲等現(xiàn)象。
7.導(dǎo)致超出16ms的原因
1.重新繪制視圖層級(jí)的內(nèi)容,這會(huì)浪費(fèi)CPU資源。
2.over draw(過(guò)度繪制)
3.一次又一次的運(yùn)行大量畫(huà)面,導(dǎo)致CPU和GPU組件大量騷動(dòng)
網(wǎng)頁(yè)名稱(chēng):app渲染性能相對(duì)專(zhuān)項(xiàng)測(cè)試?yán)碚摶A(chǔ)-創(chuàng)新互聯(lián)
當(dāng)前URL:http://jinyejixie.com/article22/ddesjc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、ChatGPT、網(wǎng)站收錄、動(dòng)態(tài)網(wǎng)站、微信小程序、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容