iOS CPU內存耗電量優化方案

原因

APP最近在某些時刻觸發了一些特殊的操做,致使APP溫度持續增高,這個問題也困擾了咱們許久,正好昨天測試的妹子又成功的觸發了這個操做。因而便有了這一次的探究。首先咱們能夠思考APP燙手的緣由可能有哪些?好比CPU、內存、定位、網絡、音視頻、動做傳感器(好比陀螺儀)、藍牙等。固然這就須要結合咱們項目具體用了這些羅列的功能中的幾種。node

內存

內存泄露這一部分應該說咱們最好定位的問題。ios

1.好比利用xcode的靜態分析(雖然它不太準)。git

2,利用Instruments中Leaks工具沒寫完一個功能跑一跑代碼看看會不會有手殘寫錯的地。

如何快速的定位問題

你也許會問這麼多問題我得一個一個的去排查嗎?有沒有更簡單的方式,嗯,有。 你須要用到的是:Energy Log這個功能github

1,選擇 面試

2,選擇鏈接的設備和大家項目的APP(only是我機子的名字,iosproject是我在github上看到的一個開源項目,簡直TMD的特別強大)

3,將Time Profiler拖到左邊來

4,點擊紅點進行調試,這時候你就能夠看到這個畫面
5,點擊call tree中的Hide System Lbraries(隱藏掉系統),sperate by thread(根據線程進行分割)

6,若是你看不到具體這些函數的調用,你須要去xcode -Build Settings - Debug information Format - 修改DWARF with DSYM Filexcode

7,點擊weight將耗時最長的線程排列到最前邊選中它(也能夠觀察哪個線程還在持續增加),到H額AVIE視圖StackTrace中查看這個耗時的線程在幹什麼,雙擊其中一行的方法.咱們就能夠看到實際項目中哪一行代碼可能存在問題。微信

8,這樣咱們就能夠很快的定位具體哪一個模塊影響了咱們整個的項目。 固然若是你想對Instruments想有更多的瞭解,你能夠去看我另一篇分享網絡

同窗,我這裏有一個iOS面試的加分項,你要不要了解一下?ide

固然有人會問了我APP發熱的時候可能手機並無連着xcode,從新跑程序可能它就不復現了?函數

隨時隨地記錄

如何作到隨時隨地記錄咱們認爲可能會出現問題或者比較重要的log日誌呢? CocoaLumberjack這個開源日誌庫是咱們項目用到的管理咱們重要的log日誌工具。

一、支持日誌打印到Xcode控制檯,打印到mac的console程序、打印到文件 二、日誌功能支持關閉和打開,支持Error、Warning、Info、Debug、Verbose、All日誌等級

三、支持基於DDLogFormatter協議自定義日誌格式和繼承DDAbstractLogger和協議DDLogger自定義logger

4,結合咱們項目的邏輯打包壓縮日誌文件上傳。

這樣咱們能夠檢測哪些老是出現異常的用戶他們當時在操做APP的哪些地方,又是什麼觸發了異常。固然這些影響咱們APP的異常狀況該怎麼檢測呢。

這個是我閱讀了微信讀書 iOS 質量保證及性能監控畫的一個mindnode圖總結了一下微信大概作了這麼多事情。

Cover微信讀書 iOS 質量保證及性能監控

補救只是最後的無奈

1.優化I/O訪問

2.縮減網絡請求

3.延遲聯網

4.圖像、動畫、視頻

5.優化定位和動做(Motion)

6.優化通知

......

這些操做有時間我會再開一篇專門具體如何作的文章。

相關文章
相關標籤/搜索