iOS耗電量檢測與優(yōu)化

一、耗電量檢測

1迎卤、進(jìn)入手機(jī)"設(shè)置"->"電池",可以直觀的看出來手機(jī)應(yīng)用的耗電情況拴鸵。

image.png

image.png

2、使用Xcode打開你的工程止吐,然后插上手機(jī),使用真機(jī)running項(xiàng)目(必須是真機(jī))侨糟,然后command+6碍扔,點(diǎn)擊Energy Impact

image.png
  • 藍(lán)色表示--合理
  • 黃色--表示程序比較耗電
  • 紅色--表示僅僅輕度
    圖表中Utilization欄中是表示瞬間耗電情況
    圖表中Average欄中,表示平均耗電情況
    圖表中Energy Impact中coat(藍(lán)色)表示運(yùn)行項(xiàng)目代碼需要電量秕重,overhead(紅色)表示開銷不同,包括CPU的喚起,無線電模組(藍(lán)牙&WiFi),和其他系統(tǒng)資源的調(diào)用等二拐。
    影響電量的五個因素服鹅,灰色表示有電量消耗,白色表示沒有電量消耗
  • CPU:CPU使用率超過20%就會快速耗干電池電量百新,高效實(shí)用CPU企软,并且當(dāng)用戶出現(xiàn)模糊輸入時快速做出不做事情的反應(yīng)。
  • Network:網(wǎng)絡(luò)活動會喚起需要長時間周期性供電的無線電模組饭望,可以分批次進(jìn)行網(wǎng)絡(luò)請求仗哨,來降低開銷
  • Location:精密&高頻的定位會增加開銷,需要按需使用铅辞。
  • GPU:圖形處理器(顯卡的處理器)厌漂,亂使用GPU會導(dǎo)致交互差,并且降低電池壽命斟珊。
  • Background:后臺狀態(tài)APP仍會消耗電量苇倡,APP要按需執(zhí)行后臺操作,并使用延遲APIs來保證系統(tǒng)運(yùn)算高效執(zhí)行囤踩,另外旨椒,在APP進(jìn)入后臺狀態(tài)時,立即減少動作高职,并且通知系統(tǒng)一次這些動作已經(jīng)完成钩乍。

3、使用Instrument的Energy Log

第一步:打開手機(jī)設(shè)置怔锌,點(diǎn)擊“開發(fā)者”


image.png

第二步:點(diǎn)擊Logging


image.png

第三步:勾選Energy寥粹,并點(diǎn)擊startRecording
image.png

第四步:運(yùn)行需要測試的APP(確保手機(jī)消耗的是手機(jī)自身的電池),運(yùn)行3-5分鐘埃元,在進(jìn)入手機(jī)設(shè)置點(diǎn)擊stopRecording


image.png

第五步:使用Xcode涝涤,把手機(jī)和Xcode相連,并打開instruments中的Energy Log岛杀,點(diǎn)擊工具欄中import Logged Data from Device
image.png

第六步:得到了電池?fù)p耗日志
  • Energy Usage Level的值(0--20)阔拳,值越大表示越耗電
  • CPU Activity表示CPU各種活動


    image.png

耗電量優(yōu)化

一、代碼層面

1类嗤、合理使用NSDateFormatter和NSCalendar這種高開銷對象

  • 性能測試表明糊肠,NSDateormatter的性能瓶頸是由于NSData格式到NSString格式的轉(zhuǎn)化,所以把NSDateFormatter創(chuàng)建單例意義不大遗锣,推薦的做法是货裹。把最常用到的日期格式做緩存。
static NSDateFormatter *cachedDateFormatter = nil;

+ (NSDateFormatter *)cachedDateFormatter {

if (!dateFormatter) {

dateFormatter = [[NSDateFormatter alloc] init];


[dateFormatter setDateFormat: @“YYYY-MM-dd HH:mm:ss”];

}

return dateFormatter;

}

2精偿、不要頻繁的刷新頁面弧圆,能刷新1行cell最好只刷新一行赋兵,盡量不要使用reloadData。

3搔预、選擇正確的集合

  • NSArray霹期,使用index來查找很快(插入和刪除很慢)
  • 字典,使用鍵來查找很快
  • NSSets是無序的拯田,用鍵查找很快历造,插入/刪除很快

4、少用運(yùn)算獲得圓角勿锅,不論view.maskToBounds還是layer.clipToBounds都會有很大的資源開銷帕膜,必須要用圓角的話,不如把圖片本身做成圓角

5溢十、懶加載垮刹,不要一次性創(chuàng)建所有的subview,而是需要時才創(chuàng)建

6张弛、重用

  • 可以模仿UITableview和UICollectionView荒典,不要一次性創(chuàng)建所有的subview,而是需要時才創(chuàng)建,完成了實(shí)名吞鸭,把他放入到一個可重用集合中寺董。

7、圖片處理

  • 圖片與imageView相同大小刻剥,避免多余運(yùn)算
  • 可以使用整副的圖片遮咖,增加應(yīng)用體積,但是節(jié)省CPU
  • 可調(diào)大小的圖片造虏,可以省去一些不必要的空間
  • CALayer御吞,CoreGraphics,甚至OpenGL來繪制漓藕,陶珠,消耗CPU

8、cache,cache,cache(緩存所有需要的)

  • 服務(wù)器相應(yīng)結(jié)果的緩存(圖片)
  • 復(fù)雜計(jì)算結(jié)果的緩存(UITableview的行高)

9享钞、盡量少用透明透明或半透明揍诽,會產(chǎn)生額外的運(yùn)算

10、使用ARC減少內(nèi)存食物栗竖,dealloc需要重寫并對屬性置為nil

11暑脆、避免龐大的xib,storyBoard,盡量使用純代碼開發(fā)

CPU層面

1狐肢、Timer的時間間隔不宜太短添吗,滿足需求即可

2、線程適量处坪,不宜過多根资,不要阻塞主線程

3、優(yōu)化算法同窘,減少循環(huán)次數(shù)

4玄帕、定位和藍(lán)牙按需取用,定位之后要關(guān)閉或降低定位頻率

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末想邦,一起剝皮案震驚了整個濱河市裤纹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌丧没,老刑警劉巖鹰椒,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異呕童,居然都是意外死亡漆际,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門夺饲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來奸汇,“玉大人,你說我怎么就攤上這事往声±拚遥” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵浩销,是天一觀的道長贯涎。 經(jīng)常有香客問我,道長慢洋,這世上最難降的妖魔是什么塘雳? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮且警,結(jié)果婚禮上粉捻,老公的妹妹穿的比我還像新娘。我一直安慰自己斑芜,他們只是感情好肩刃,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著杏头,像睡著了一般盈包。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上醇王,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天呢燥,我揣著相機(jī)與錄音,去河邊找鬼寓娩。 笑死叛氨,一個胖子當(dāng)著我的面吹牛呼渣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播寞埠,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼屁置,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了仁连?” 一聲冷哼從身側(cè)響起蓝角,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎饭冬,沒想到半個月后使鹅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡昌抠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年患朱,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片炊苫。...
    茶點(diǎn)故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡麦乞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出劝评,到底是詐尸還是另有隱情姐直,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布蒋畜,位于F島的核電站声畏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏姻成。R本人自食惡果不足惜插龄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望科展。 院中可真熱鬧均牢,春花似錦、人聲如沸才睹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽琅攘。三九已至垮庐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間坞琴,已是汗流浹背哨查。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留剧辐,地道東北人寒亥。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓邮府,卻偏偏與公主長得像,于是被迫代替她去往敵國和親溉奕。 傳聞我的和親對象是個殘疾皇子挟纱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 耗電量檢測 1.進(jìn)入手機(jī)"設(shè)置" -> "電池",可以直觀的看出來手機(jī)應(yīng)用的耗電情況. 2.使用xcode打開你的...
    陳俊峰閱讀 34,338評論 13 116
  • 資本需求推動開發(fā)輪子。上個月腐宋,接收到用戶反饋,用著我們的 App檀轨,尤其是物流模塊的司機(jī)端耗電量特別大胸竞,看下有...
    Maxdon閱讀 12,733評論 6 24
  • 使用xcode打開你的工程,然后插上手機(jī),使用真機(jī)running項(xiàng)目(必須是真機(jī)),然后comand + 6,點(diǎn)擊...
    lltree閱讀 5,502評論 0 28
  • 一、電量消耗理論與分析 寫出耗電量低的應(yīng)用的關(guān)鍵是要透徹理解它的理論以及全部過程参萄。下面將對電量消耗的相關(guān)理論知識進(jìn)...
    既心閱讀 1,169評論 0 0
  • 今天淺略地學(xué)習(xí)了一下新聞發(fā)言人所應(yīng)具備的基本素質(zhì)卫枝。 新聞發(fā)言人代表著身后的組織集體,作為公眾人物暴...
    考拉的桉樹呢閱讀 781評論 0 0