iOS性能調(diào)優(yōu)筆記

并不是所有的代碼都需要性能調(diào)優(yōu)。iOS的性能調(diào)優(yōu)主要就在于表格的性能,而在使用instruments在做性能檢測(cè)的時(shí)候,如果檢測(cè)到的性能已經(jīng)很好達(dá)到接近60fps,那么就不需要進(jìn)行性能調(diào)優(yōu),如果畫(huà)蛇添足反而會(huì)適得其反,影響性能。

圖像IO

1、系統(tǒng)在使用圖片的時(shí)候并不能直接使用,都需要先從各種格式解碼到內(nèi)存,然后才能繪制,而且解碼是一個(gè)相當(dāng)負(fù)責(zé)的過(guò)程,相當(dāng)耗時(shí)。iOS 推薦使用PNG圖片(一些很大的背景圖片可以考慮JPG或者JPEG),是因?yàn)橥ǔNG圖片雖然加載到內(nèi)存會(huì)更慢(圖片通常會(huì)更大),但是PNG的圖片的解碼算法更為簡(jiǎn)單,耗時(shí)更少。耗時(shí)操作可以考慮異步線(xiàn)程來(lái)處理
2、如果想顯示圖片到比原始尺寸小的容器中,那么一次性在后臺(tái)線(xiàn)程重新繪制到正確的尺寸會(huì)比每次顯示的時(shí)候都做縮放會(huì)更有效
3、緩存其實(shí)很簡(jiǎn)單:就是存儲(chǔ)昂貴計(jì)算后的結(jié)果(或者從閃存或者網(wǎng)絡(luò)加載的文件)。但是緩存本質(zhì)上就是已空間(內(nèi)存)來(lái)?yè)Q性能,但是對(duì)于移動(dòng)終端而言,內(nèi)存(RAM)同樣是很寶貴的資源,所以我們不能把所有的東西緩存起來(lái)。可以考慮自定義緩存方式。
4、因?yàn)?code>imageNamed:會(huì)將所有的圖片緩存到內(nèi)存,自帶緩存不會(huì)在對(duì)象銷(xiāo)毀直接清除,但是占用內(nèi)存較大;imageWithContentOfFile:方法占用內(nèi)存較少,但沒(méi)有用自帶緩存,每次使用同一個(gè)圖片都需要重新加載解碼一遍。所以如果圖片較小,并且頻繁使用的圖片,使用imageNamed:來(lái)加載圖片(按鈕圖片/主頁(yè)圖片/占位圖);如果圖片較大,并且使用次數(shù)較少,使用 imageWithContentOfFile:來(lái)加載(相冊(cè)/新特性頁(yè)面)。

圖層性能

1、UIView設(shè)置背景backgroundColor可以避免一些混合圖層的出現(xiàn)。不知道為什么不設(shè)置背景的UIView會(huì)默認(rèn)的被認(rèn)為透明,從而出現(xiàn)混合圖層。(但是UIView的屬性表明,默認(rèn)的UIView并不是透明的)
2、UILabel如果顯示中文,就算是設(shè)置了backgroundColor仍然在查看混合圖層的時(shí)候,還是標(biāo)紅的。設(shè)置masksToBounds = YES即可解決(UILabel內(nèi)容是中文時(shí), label 的實(shí)際渲染區(qū)域要大于 label 的 size, 就是因?yàn)橥鈬幸蝗ν该?才會(huì)有圖層混合)
3、設(shè)置圓角+masksToBounds就會(huì)導(dǎo)致離屏渲染,所以不要設(shè)置圓角,如果一定要使用圓角,可以使用UIGraphic去切圓角
4、圖片使用不要帶有alpha通道
5、圖片的使用盡量避免縮放,一定要縮放同樣考慮使用UIGraphic去畫(huà)
6、在表格視圖中為了減少圖層數(shù)量可以直接,啟用柵格化和離屏渲染。但是一定要使用instruments工具分析一下,是否有必要,但是如果開(kāi)啟柵格化就必須設(shè)置分辨率,否則邊緣會(huì)有毛刺

//手動(dòng)啟用離屏渲染
self.layer.drawsAsynchronously = true
//手動(dòng)啟用柵格化
self.layer.shouldRasterize = true
//啟用柵格化必須設(shè)置設(shè)備的分辨率,否則可能會(huì)出現(xiàn)毛刺
self.layer.rasterizationScale = UIScreen.main.scale

7、包含文本的視圖UILabel使用的時(shí)候,盡量避免修改修改frame,修改frame會(huì)導(dǎo)致文本重繪(隱式繪制)`

8、如果圖層不會(huì)被頻繁重繪,可以對(duì)離屏渲染的圖層使用柵格化,作為一種優(yōu)化方式,比如第6條
9、表格控件不要?jiǎng)討B(tài)創(chuàng)建控件,創(chuàng)建豐富的控件,在顯示的時(shí)候根據(jù)數(shù)據(jù)隱藏或者顯示

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,572評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,071評(píng)論 3 414
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 175,409評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 62,569評(píng)論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,360評(píng)論 6 404
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 54,895評(píng)論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,979評(píng)論 3 440
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,123評(píng)論 0 286
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,643評(píng)論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,559評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,742評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,250評(píng)論 5 356
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 43,981評(píng)論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,363評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,622評(píng)論 1 280
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,354評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,707評(píng)論 2 370

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

  • (1)Time Profiler:用來(lái)測(cè)量被方法/函數(shù)打斷的CPU使用情況。 (2)Core Animation:...
    錢(qián)噓噓閱讀 1,487評(píng)論 2 6
  • 在iOS中隨處都可以看到絢麗的動(dòng)畫(huà)效果,實(shí)現(xiàn)這些動(dòng)畫(huà)的過(guò)程并不復(fù)雜,今天將帶大家一窺ios動(dòng)畫(huà)全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,535評(píng)論 6 30
  • 【讀經(jīng)】 代上10章 【金句】 尼八的兒子耶羅波安先前躲避所羅門(mén)王,逃往埃及,住在那里;他聽(tīng)見(jiàn)這事,就從埃及回來(lái)。...
    chanor閱讀 1,535評(píng)論 0 0
  • 我在凌晨?jī)牲c(diǎn)醒來(lái),因?yàn)樽蛱?點(diǎn)就休息了,醒來(lái)時(shí)特別清醒,也特別頭疼,我往太陽(yáng)穴上抹了風(fēng)油精,所以就徹底醒來(lái)。 我聽(tīng)...
    張果凍閱讀 201評(píng)論 0 0
  • 今天是機(jī)械培訓(xùn)第三天,上午老師介紹了回轉(zhuǎn),視圖,截面,剖視圖;基本體素建模:長(zhǎng)方體,圓柱體,圓錐體,球體;布爾運(yùn)...
    鑫兒luna閱讀 84評(píng)論 0 0