? ? 資本需求推動(dòng)開(kāi)發(fā)輪子。上個(gè)月,接收到用戶反饋,用著我們的 App,尤其是物流模塊的司機(jī)端耗電量特別大,看下有什么辦法可以進(jìn)行 iOS 性能優(yōu)化?從問(wèn)題看,只能猜測(cè)到 CPU 開(kāi)銷(xiāo)比較大或者地理位置獲取時(shí)候比較耗電。我們一起去敲敲輪子,哪里需要修補(bǔ)下。

? ? 需求來(lái)了,我們帶上?Xcode?Instruments 工具一起上!操作過(guò)程 Xcode --> Open Developer Tool --> Instruments --> Energy Log 的方式來(lái)打開(kāi)。

? ? 利用Xcode?Instruments?的 Energy Log,先看下同類(lèi) APP 中的 "58速運(yùn)"?iOS客戶端?,瞧瞧它耗電量主要在什么地方,也猜測(cè)下它怎么進(jìn)行 iOS 性能優(yōu)化的。具體按如下操作。
? ? 1、打開(kāi)手機(jī)設(shè)置,點(diǎn)擊 "開(kāi)發(fā)者",選中 Logging。
? ? 注意(Quote Developer.apple.com)
? ? 要查看開(kāi)發(fā)人員設(shè)置(下圖的"開(kāi)發(fā)者"),您必須配置設(shè)備以進(jìn)行開(kāi)發(fā),并在 Xcode 或 Instruments 運(yùn)行時(shí)將其插入Mac。如果尚未設(shè)置您的設(shè)備,請(qǐng)參閱配置 Xcode項(xiàng)目以進(jìn)行分發(fā)并在設(shè)備上啟動(dòng)應(yīng)用程序。即使在設(shè)置了設(shè)備之后,當(dāng)設(shè)備重新啟動(dòng)或關(guān)閉時(shí),Developer 設(shè)置也會(huì)消失。要恢復(fù)設(shè)置,請(qǐng)將設(shè)備重新連接到 Xcode 或 Instruments。

? ? 2、iOS 設(shè)置中的?Instruments?勾選 Energy,并點(diǎn)擊startRecording。然后打開(kāi) "58速運(yùn)" APP 跑起來(lái)。操作五分鐘左右 (具體看你的需要) ,再進(jìn)入手機(jī)設(shè)置點(diǎn)擊 stopRecording。
? ? 1?? 測(cè)量電量操作期間,手機(jī)不能連接數(shù)據(jù)線,這樣確保手機(jī)消耗的是手機(jī)自身的電量,以便進(jìn)行實(shí)際測(cè)量。
? ? 2???啟用能量記錄后,由于 iOS 設(shè)備會(huì)在隱式地記錄與電量相關(guān)的數(shù)據(jù)。由于日志記錄有效,可以全天記錄。即使設(shè)備處于睡眠模式,startRecording狀態(tài)下記錄會(huì)繼續(xù)進(jìn)行。但是,如果設(shè)備的電池完全耗盡或 iOS設(shè)備關(guān)機(jī)后,日志數(shù)據(jù)將會(huì)丟失。

? ? 3、接著,把?iOS 設(shè)備連接 Xcode,并打開(kāi) Instruments 中的 Energy Log,點(diǎn)擊工具欄中 Import Logged Data from Device。導(dǎo)入我們?iOS?性能優(yōu)化中能耗的數(shù)據(jù)。

4、Instruments 中可以看到? "58速運(yùn)" 的功耗,圖中可以見(jiàn)到?"58速運(yùn)"的?iOS 客戶端性能優(yōu)化,在 GPS 定位中下了一定的功夫。

? ? 如何優(yōu)化 APP 在設(shè)備上的耗電量
? ?可以從?官方文檔?知道,通過(guò)?Instruments?收集的數(shù)據(jù),需要查找尖峰或其他異常或意外活動(dòng)的區(qū)域。然后,查看這些區(qū)域中的代碼以確定是否可以進(jìn)行改進(jìn)。
? ? Tips: Instruments??的 Energy Log?指示有 0 到 20 的級(jí)別,表示應(yīng)用在任何給定時(shí)間使用了多少電量,值越大表示越耗電。如果 APP 電量使用水平偶爾很高,則并不一定意味著應(yīng)用有問(wèn)題。APP 可能只需要更多的能量來(lái)完成它執(zhí)行的某些任務(wù)。例如,它可以在執(zhí)行復(fù)雜網(wǎng)絡(luò)操作時(shí)使用 GPS 等,而這是有效的電量使用情況。我們應(yīng)該尋找的是尖峰或高能量使用區(qū)域,這些區(qū)域是意外的或可以在更優(yōu)化的時(shí)間執(zhí)行。
? ? 使用其他分析模板和儀器來(lái)測(cè)量能耗
? ? 實(shí)際中很多因素都會(huì)影響 iOS 性能優(yōu)化中的能耗。雖然?Energy Log?分析模板可以分析一系列統(tǒng)計(jì)信息,但您可以使用其他分析模板和工具來(lái)檢查和評(píng)估應(yīng)用程序的能源影響。 比如下面?iOS?性能優(yōu)化常用工具?Instruments 中。



? ? ? ???Was this help article useful? Send feedback.
? ? 參考鏈接:
? ? ? ? ?Apple Developer 文檔 - 性能優(yōu)化