在本章,你會學(xué)到以下東西:
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信平臺小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了盂縣免費(fèi)建站歡迎大家使用!
網(wǎng)絡(luò)和文件IO處理如何影響app性能
和緩存算法相關(guān)的一般問題和技術(shù)
iPhone緩存技術(shù)中的特定問題
1) 你應(yīng)該緩存什么
2) 你應(yīng)該什么時候緩存
3) 如何實現(xiàn)緩存
4) 你應(yīng)該在哪里緩存數(shù)據(jù)和圖片
內(nèi)存消耗和性能之間的權(quán)衡
對于如今大多數(shù)的apps,開發(fā)者通常從他們自己的服務(wù)器加載數(shù)據(jù)或者從第三方服務(wù)獲取數(shù)據(jù)。比較少的apps會將數(shù)據(jù)存儲在文件系統(tǒng)中,然后在必要的時候加載顯示給用戶。幾乎沒有apps不使用網(wǎng)絡(luò)或文件IO。因此,理解這些處理類型產(chǎn)生的影響,能夠幫助你更簡單的定位和解決問題。
網(wǎng)絡(luò),文件,內(nèi)存處理時的不同性能
讓我們看一下從文件系統(tǒng)加載一張圖片到內(nèi)存和從一臺給定的服務(wù)器加載到內(nèi)存花費(fèi)了多少時間。當(dāng)然,這個結(jié)果取決于服務(wù)器處理請求的速度,網(wǎng)絡(luò)的速度,服務(wù)器到測試機(jī)的距離。但是,我想要說明一個重要的概念,通過網(wǎng)絡(luò)加載一張圖片要比從文件系統(tǒng)中加載慢的多,從文件系統(tǒng)中加載要比圖片本身就在內(nèi)存中慢的多。我是基于加載一張50kb的圖片來進(jìn)行性能測試的。下面是測試的結(jié)果:
文件加載時間:0.001147
網(wǎng)絡(luò)加載時間:4.160634
從文件系統(tǒng)加載圖片花了1ms,而從網(wǎng)絡(luò)加載花了4s -- 巨大的差別!1ms對于性能幾乎不會產(chǎn)生什么影響;但是,如果需要同時加載10-20張圖片,其中有些圖片尺寸比較大 -- 可能超過幾百 kbs。這些圖片總的加載時間將會超過數(shù)秒鐘。
如何確定瓶頸
從文件或網(wǎng)絡(luò)加載有兩個主要問題。
在app顯示圖片之前用戶需要等很長一段時間。這個時間會根據(jù)圖片的數(shù)量而增加。如果UI在運(yùn)行時需要加載很多圖片,比如像UITableView,用戶必須等待很長的時間,當(dāng)他們想滾動查看更多信息的時候。
它可能會阻塞UI,這樣用戶就不能和UI恰當(dāng)?shù)倪M(jìn)行交互。第6章也會介紹到這些。
因為從文件/網(wǎng)絡(luò)加載 data/p_w_picpaths 花的時間比從內(nèi)存中加載花的時間多,而這個加載過程通常是性能的瓶頸,如果你的apps必須等待從網(wǎng)絡(luò)返回數(shù)據(jù),或其他必須等待的地方返回數(shù)據(jù)。所以當(dāng)你遇到性能問題時,你首先要測試的就是文件或網(wǎng)絡(luò)加載數(shù)據(jù)。像在第2章看到的,你可以使用 System Activity和File Activity觀察數(shù)據(jù)加載過程。圖4-1顯示了UI的這些性能測試指標(biāo)。
圖4-1顯示的file activities包括了加載和寫文件/目錄,還有讀文件屬性。圖4-2展示了每一個activity的更多細(xì)節(jié),能夠幫助你查看哪種類型的file activities運(yùn)行的比較頻繁。
圖4-3和4-4顯示了更多關(guān)于System Usage的細(xì)節(jié),它更加通用,覆蓋了更多的數(shù)據(jù)類型。如圖4-4,有很多plist和nib的activities。
今天暫時介紹到這里,后續(xù)敬請期待。。。