iOS客戶端啟動速度優(yōu)化

今日頭條——iOS客戶端啟動速度優(yōu)化

關(guān)注度——★★★★

正文——眾所周知,一款軟件、一個客戶端的使用,給人的體驗度是非常重要的,只有有好的體驗度,才會有口碑,才會有越來越多的人使用,而一個客戶端啟動速度是非常重要的,這是用戶對產(chǎn)品的第一印象。

應(yīng)用啟動時間,直接影響用戶對一款應(yīng)用的判斷和使用體驗。頭條主app本身就包含非常多并且復(fù)雜度高的業(yè)務(wù)模塊(如新聞、視頻等),也接入了很多第三方的插件,這勢必會拖慢應(yīng)用的啟動時間,本著精益求精的態(tài)度和對用戶體驗的追求,我們希望在業(yè)務(wù)擴張的同時最大程度的優(yōu)化啟動時間。

main()調(diào)用之前的加載過程

App開始啟動后, 系統(tǒng)首先加載可執(zhí)行文件(自身App的所有.o文件的集合),然后加載動態(tài)鏈接庫dyld,dyld是一個專門用來加載動態(tài)鏈接庫的庫。 執(zhí)行從dyld開始,dyld從可執(zhí)行文件的依賴開始, 遞歸加載所有的依賴動態(tài)鏈接庫。

系統(tǒng)使用動態(tài)鏈接有幾點好處:

代碼共用:很多程序都動態(tài)鏈接了這些 lib,但它們在內(nèi)存和磁盤中中只有一份。

易于維護:由于被依賴的 lib 是程序執(zhí)行時才鏈接的,所以這些 lib 很容易做更新。

減少可執(zhí)行文件體積:相比靜態(tài)鏈接,動態(tài)鏈接在編譯時不需要打進去,所以可執(zhí)行文件的體積要小很多。

找到拖慢啟動應(yīng)用時長的瓶頸

為了找到瓶頸,我們在啟動之后的didFinishLauhcning方法開始執(zhí)行到首頁列表頁的NewsListViewController的viewDidAppear方法,幾乎每個可能比較耗時的流程進行拆分和統(tǒng)計,得到統(tǒng)計數(shù)據(jù)之后發(fā)現(xiàn):

主要耗時在首頁UI構(gòu)造和渲染(storyboard加載,tabBar/topBar渲染,開屏廣告加載/cell注冊/日志模塊初始化這幾個步驟)。

具體優(yōu)化點

因此,針對于今日頭條這個App我們可以優(yōu)化的點如下:

1.純代碼方式而不是storyboard加載首頁UI。

2.對didFinishLaunching里的函數(shù)考慮能否挖掘可以延遲加載或者懶加載,需要與各個業(yè)務(wù)方pm和rd共同check 對于一些已經(jīng)下線的業(yè)務(wù),刪減冗余代碼。

對于一些與UI展示無關(guān)的業(yè)務(wù),如微博認證過期檢查、圖片最大緩存空間設(shè)置等做延遲加載

3.對實現(xiàn)了+load()方法的類進行分析,盡量將load里的代碼延后調(diào)用。

4.上面統(tǒng)計數(shù)據(jù)顯示展示feed的導(dǎo)航控制器頁面(NewsListViewController)比較耗時,對于viewDidLoad以及viewWillAppear方法中盡量去嘗試少做,晚做,不做。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 2016年國慶假期終于把此書過完,整理筆記和體會于此。 關(guān)于書名 書名源于俄羅斯的演員斯坦尼斯拉夫斯基創(chuàng)作的《演員...
    李劍飛的簡書閱讀 7,451評論 2 65
  • 應(yīng)用啟動時間,直接影響用戶對一款應(yīng)用的判斷和使用體驗。頭條主app本身就包含非常多并且復(fù)雜度高的業(yè)務(wù)模塊(如新聞、...
    hgl閱讀 492評論 0 0
  • 路上,一陣狂風(fēng)肆虐,路邊的電動車、共享單車的警報聲此起彼伏,前方的一群女子慌亂地原地打轉(zhuǎn),同時傳出如男子誤...
    0119閱讀 130評論 0 2
  • 前兩天匆忙回家見到了閨蜜,距離上次見面大概過去了兩三個月。其實上大學(xué)后我們見面的次數(shù)并不多,先是她有男朋友需要見...
    謝小小鳥__閱讀 1,151評論 0 0
  • 今天下午葛老師就把成績單發(fā)到了群里,看了之后我非常高興,因為大寶以115的成績?nèi)〉昧藘蓚€班的第一名,我決定今晚親自...
    浩菡雨霖閱讀 286評論 0 0

友情鏈接更多精彩內(nèi)容