背景:
去年工作成果橡庞,現(xiàn)在將有道的筆記轉(zhuǎn)移這里,有問(wèn)題大家可以探討菱肖,我們可以通過(guò)二進(jìn)制重排優(yōu)化啟動(dòng)時(shí)間,減少page-fault次數(shù)旭从,優(yōu)化的方向是減少page-in操作稳强,需要將啟動(dòng)相關(guān)的系統(tǒng)函數(shù)和應(yīng)用函數(shù)進(jìn)行放入一個(gè)page里面,正常一個(gè)page是可以存儲(chǔ)所有的啟動(dòng)相關(guān)的函數(shù)的和悦,然后將這些啟動(dòng)函數(shù)的函數(shù)簽名寫(xiě)入.order文件供xcode 的鏈接器ld消費(fèi)退疫,那么我們第一步需要拿到啟動(dòng)相關(guān)的函數(shù)?具體步驟如下:
啟動(dòng)相關(guān)的函數(shù):
第一步:配置apple clang custom compiles 的配置 在other-c-flag里增加-fsanitize-coverage=func,trace-pc-guard配置鸽素,系統(tǒng)會(huì)給每一個(gè)函數(shù)調(diào)用之前插入一個(gè) __sanitizer_cov_trace_pc_guard 函數(shù)的hook,需要外部自己實(shí)現(xiàn)褒繁,攔截所有的函數(shù)信息
第二步:將獲取的函數(shù)信息存在一個(gè)列表里,等待啟動(dòng)完畢馍忽,寫(xiě)入.order文件存入我們沙盒下任意目錄棒坏,因?yàn)榭紤]到page的準(zhǔn)確性燕差,我們可以多運(yùn)行幾遍
,拿到最準(zhǔn)確的啟動(dòng)函數(shù)信息
第三步:xcode ->windows->device and simulator device -> 下載對(duì)應(yīng)的包信息取出對(duì)應(yīng)的order文件坝冕,拷貝到我們的目錄下
注意:大家第一次可以使用我寫(xiě)好的的pod庫(kù)去獲取啟動(dòng)相關(guān)的函數(shù)信息
每一次會(huì)存在沙河/temp目錄下
pod 'ClangTraceLaurchMethods', :git => 'git@github.com:GE-GAO-ZHAO/ClangTraceLaurchMethods.git', :branch => 'dev'
消費(fèi)order文件:
第一步:xcode-build-setting-linking 設(shè)置order-file的path為.order文件的路徑即可
第二步:關(guān)掉我們獲取啟動(dòng)函數(shù)的所有配置和注釋相關(guān)的代碼徒探,這時(shí)再去command + r
優(yōu)化成果檢測(cè):
第一種:system trace 看下page -falut次數(shù),自己google看下
第二種:可以通過(guò)fishhook看mian函數(shù)之后優(yōu)化前后的時(shí)間消耗