真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

iOS性能優(yōu)化教程之頁(yè)面加載速率詳解-創(chuàng)新互聯(lián)

前言

在盤(pán)龍等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶(hù)提供成都網(wǎng)站制作、網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站建設(shè),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣,外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè),盤(pán)龍網(wǎng)站建設(shè)費(fèi)用合理。

我認(rèn)為在編碼過(guò)程中時(shí)刻注意性能影響是有必要的,但凡事都有個(gè)度,不能為了性能耽誤了開(kāi)發(fā)進(jìn)度。在時(shí)間緊急的情況下我們往往采用“quick and dirty”的方案來(lái)快速出成果,后面再迭代優(yōu)化,即所謂的敏捷開(kāi)發(fā)。與之相對(duì)應(yīng)的是傳統(tǒng)軟件開(kāi)發(fā)中的瀑布流開(kāi)發(fā)流程。

卡頓產(chǎn)生的原因

iOS性能優(yōu)化教程之頁(yè)面加載速率詳解

在 iOS 系統(tǒng)中,圖像內(nèi)容展示到屏幕的過(guò)程需要 CPU 和 GPU 共同參與。CPU 負(fù)責(zé)計(jì)算顯示內(nèi)容,比如視圖的創(chuàng)建、布局計(jì)算、圖片解碼、文本繪制等。隨后 CPU 會(huì)將計(jì)算好的內(nèi)容提交到 GPU 去,由 GPU 進(jìn)行變換、合成、渲染。之后 GPU 會(huì)把渲染結(jié)果提交到幀緩沖區(qū)去,等待下一次 VSync 信號(hào)到來(lái)時(shí)顯示到屏幕上。由于垂直同步的機(jī)制,如果在一個(gè) VSync 時(shí)間內(nèi),CPU 或者 GPU 沒(méi)有完成內(nèi)容提交,則那一幀就會(huì)被丟棄,等待下一次機(jī)會(huì)再顯示,而這時(shí)顯示屏?xí)A糁暗膬?nèi)容不變。這就是界面卡頓的原因。

因此,我們需要平衡 CPU 和 GPU 的負(fù)荷避免一方超負(fù)荷運(yùn)算。為了做到這一點(diǎn),我們首先得了解 CPU 和 GPU 各自負(fù)責(zé)哪些內(nèi)容。

iOS性能優(yōu)化教程之頁(yè)面加載速率詳解

上面的圖展示了 iOS 系統(tǒng)下各個(gè)模塊所處的位置,下面話不多說(shuō)了,來(lái)一起看看本文的正文。

之前搜羅了網(wǎng)上很多關(guān)于iOS性能優(yōu)化方面的資料 ,本人和我的小伙伴們也用了一些時(shí)間針對(duì)自己的App進(jìn)行了App的啟動(dòng)速率、頁(yè)面的加載速率和 頁(yè)面的幀率方面進(jìn)行了優(yōu)化,所以結(jié)合了理論和實(shí)踐,把我們?cè)趯?shí)踐中主要踩過(guò)的坑和需要注意的東西 ,總結(jié)了一下,希望可以幫到正在準(zhǔn)備進(jìn)行App的性能優(yōu)化的你。今天主要講一下App的頁(yè)面加載速率的優(yōu)化。

##目的

為了找到真正使我們的App緩慢的原因,我們使用Xcode或者一些第三方平臺(tái),進(jìn)行數(shù)據(jù)測(cè)試;

一、頁(yè)面加載速率的定義

頁(yè)面加載速率:關(guān)于頁(yè)面的加載速度的統(tǒng)計(jì),我們是測(cè)試一個(gè)viewcontroller從viewdidload的第一行到viewdidappear的最后一行所用的時(shí)間。

二、頁(yè)面加載速率的目標(biāo)值

目標(biāo):頁(yè)面加載速率最好完美的時(shí)間在0.3s左右

為了弄明白,到底是什么原因讓我們的App,頁(yè)面加載速度相對(duì)來(lái)說(shuō)比較慢,我們對(duì)頁(yè)面的UI進(jìn)行優(yōu)化,數(shù)據(jù)也進(jìn)行了異步加載,我們hook數(shù)據(jù)一看,頁(yè)面的加載速度果然有所減少,但是減少的值大概只有0.03s,很明顯這個(gè)值不足以達(dá)到我們想要的效果,后來(lái),通過(guò)寫(xiě)了一些測(cè)試demo,針對(duì)空白頁(yè)面和有UI創(chuàng)建的頁(yè)面進(jìn)行各種對(duì)比后,似乎和我們頁(yè)面加載過(guò)程中的push動(dòng)畫(huà)有很大的關(guān)系;下面所做的實(shí)驗(yàn)主要是為了驗(yàn)證這個(gè)問(wèn)題,針對(duì)這個(gè)問(wèn)題,我選取了我們工程的一個(gè)類(lèi),對(duì)有push進(jìn)入到這個(gè)頁(yè)面有過(guò)場(chǎng)動(dòng)畫(huà)和沒(méi)有動(dòng)畫(huà)進(jìn)行測(cè)試,以下數(shù)據(jù)是測(cè)試結(jié)果:

iOS性能優(yōu)化教程之頁(yè)面加載速率詳解

通過(guò)這個(gè)實(shí)驗(yàn),我們可以看出,不加動(dòng)畫(huà)的話,我們的頁(yè)面加載的速度可以說(shuō)是沒(méi)有任何的卡頓,超級(jí)迅速,但是如果把過(guò)場(chǎng)動(dòng)畫(huà)給打開(kāi),單是動(dòng)畫(huà)的時(shí)間就是在0.5s左右,而s我們是希望用戶(hù)在點(diǎn)擊跳轉(zhuǎn)頁(yè)面的時(shí)候,目標(biāo)是頁(yè)面在0.3s左右呈現(xiàn),這如果加動(dòng)畫(huà),這個(gè)目標(biāo)很難達(dá)到;不過(guò)通過(guò)查找相關(guān)資料,我們證實(shí)了我們可以把如果有過(guò)場(chǎng)動(dòng)畫(huà)的頁(yè)面,去掉動(dòng)畫(huà),而是通過(guò)我們自己去給用戶(hù)添加一個(gè)過(guò)場(chǎng)動(dòng)畫(huà),而這個(gè)時(shí)間是可以受到我們自己的控制,而不是傻傻的等動(dòng)畫(huà)結(jié)束后再加載頁(yè)面內(nèi)容。的這就是說(shuō),可以一邊動(dòng)畫(huà)的時(shí)候,一邊已經(jīng)開(kāi)始加載頁(yè)面相關(guān)東西了,這樣可以大大的優(yōu)化頁(yè)面加載時(shí)間。

三、優(yōu)化前數(shù)據(jù)

iOS性能優(yōu)化教程之頁(yè)面加載速率詳解

四、 優(yōu)化后的數(shù)據(jù)

iOS性能優(yōu)化教程之頁(yè)面加載速率詳解

到這里 ,你一定想問(wèn) :我該如何hook數(shù)據(jù)的???

五、如何進(jìn)行數(shù)據(jù)的收集

給UIViewController 創(chuàng)建一個(gè)分類(lèi) eg :UIViewController+Swizzle

代碼如下

#import 
#import 

@interface UIViewController (Swizzle)
@property(nonatomic,assign) CFAbsoluteTime viewLoadStartTime;

@end

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。


網(wǎng)站標(biāo)題:iOS性能優(yōu)化教程之頁(yè)面加載速率詳解-創(chuàng)新互聯(lián)
文章出自:http://weahome.cn/article/dhosjd.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部