MetricKit框架詳細(xì)解析(二) —— Improving Your App's Performance(一)

版本記錄

版本號(hào) 時(shí)間
V1.0 2021.05.12 星期三

前言

MetricKit由iOS13系統(tǒng)進(jìn)引入洼畅,用來(lái)匯總和分析有關(guān)異常和崩潰診斷以及電源和性能指標(biāo)的每個(gè)設(shè)備的報(bào)告棚赔。下面我們就一起來(lái)看下這個(gè)框架靠益。感興趣的可以看下面幾篇文章。
1. MetricKit框架詳細(xì)解析(一) —— 基本概覽(一)

Overview

客戶期望應(yīng)用程序運(yùn)行良好芋浮。 啟動(dòng)時(shí)間過(guò)長(zhǎng)或輸入響應(yīng)緩慢的應(yīng)用可能會(huì)向用戶顯示好像它無(wú)法正常工作或呆滯壳快。 發(fā)出大量大型網(wǎng)絡(luò)請(qǐng)求的應(yīng)用可能會(huì)增加用戶的數(shù)據(jù)費(fèi)用并耗盡設(shè)備電池的電量眶痰。 這些行為中的任何一種都會(huì)使用戶感到沮喪,并導(dǎo)致他們卸載應(yīng)用程序裆站。

通過(guò)科學(xué)地解決問(wèn)題來(lái)計(jì)劃和實(shí)施性能改進(jìn):

  • 1) 收集有關(guān)用戶看到的問(wèn)題的信息黔夭。
  • 2) 評(píng)估您的應(yīng)用行為本姥,以找出問(wèn)題的原因。
  • 3) 計(jì)劃一項(xiàng)更改以改善這種情況氛赐。
  • 4) 實(shí)施更改。
  • 5) 觀察應(yīng)用程序的性能是否提高滓侍。

這些活動(dòng)形成了一個(gè)持續(xù)改進(jìn)的循環(huán)撩笆,如下圖所示缸浦。

最大限度地減少資源使用使用戶受益裂逐,并改善他們對(duì)您的應(yīng)用程序的認(rèn)知。這里有一些特殊的好處:

  • 減少應(yīng)用啟動(dòng)時(shí)間可改善用戶體驗(yàn)弥姻,并減少iOS看門狗定時(shí)器終止應(yīng)用的機(jī)會(huì)篙悯。
  • 減少整體內(nèi)存使用量可以減少iOS在后臺(tái)釋放應(yīng)用程序內(nèi)存的可能性鸽照,并在用戶切換回您的應(yīng)用程序時(shí)提高響應(yīng)速度。
  • 減少磁盤寫(xiě)入可提高應(yīng)用程序的整體性能定血,使其響應(yīng)速度更快澜沟,并減少用戶設(shè)備存儲(chǔ)的磨損峡谊。
  • 降低掛起率和掛起持續(xù)時(shí)間可以提高用戶對(duì)應(yīng)用程序性能和響應(yīng)速度的認(rèn)識(shí)。
  • 減少電池消耗和使用耗電設(shè)備功能可以使您的應(yīng)用程序更可靠濒析,并有助于確保在需要時(shí)可以使用其余用戶設(shè)備号杏。

即使您的測(cè)量和觀察結(jié)果顯示沒(méi)有緊迫的性能問(wèn)題斯棒,還是建議您執(zhí)行性能改進(jìn)周期并進(jìn)行預(yù)防性工作,以防止應(yīng)用性能下降庭惜。


Gather Data About Your App's Current Performance

要全面了解您的應(yīng)用的性能蜈块,請(qǐng)結(jié)合以下多種來(lái)源的信息:

  • 使用Xcode Organizer可以查看有關(guān)啟動(dòng)時(shí)間,用戶界面響應(yīng)性,對(duì)存儲(chǔ)的寫(xiě)入器一,內(nèi)存使用和能耗的度量厨内,以及針對(duì)磁盤寫(xiě)入雏胃,崩潰和能耗的診斷報(bào)告。利用Organizer方仿,您可以按設(shè)備型號(hào)统翩,應(yīng)用程序版本和用戶百分位數(shù)細(xì)分度量厂汗。有關(guān)更多信息,請(qǐng)參閱 Analyzing the Performance of Your Shipping App贾节。
  • 使用MetricKit收集指標(biāo)并將其記錄在您自己的工具中栗涂。這些指標(biāo)采用直方圖的形式霎匈,記錄了一天中觀察到的值的頻率铛嘱。 MetricKit超越了Metrics organizer中顯示的度量標(biāo)準(zhǔn)袭厂,還包括平均像素亮度纹磺,蜂窩網(wǎng)絡(luò)狀況以及與應(yīng)用程序中的自定義OSSignpost事件相關(guān)聯(lián)的持續(xù)時(shí)間亮曹。
  • TestFlight測(cè)試人員那里獲取有關(guān)他們使用您的應(yīng)用Beta版的體驗(yàn)的反饋照卦。填寫(xiě)您的Beta版本的Test Information頁(yè)面,并要求測(cè)試人員提供有關(guān)您應(yīng)用性能的反饋采转。包括電子郵件地址瞬痘,以便測(cè)試人員可以報(bào)告他們的發(fā)現(xiàn)框全。
  • 調(diào)查您的用戶對(duì)他們使用您的應(yīng)用的released版本的體驗(yàn)的反饋。邀請(qǐng)用戶通過(guò)電子郵件或應(yīng)用內(nèi)的專用界面發(fā)送反饋拆撼。向他們?cè)儐?wèn)他們使用該應(yīng)用程序的體驗(yàn)-哪種方法有效情萤,以及遇到的任何問(wèn)題摹恨。

Determine the Most Important Aspect to Improve

利用從觀察中獲得的信息以及對(duì)應(yīng)用程序目的和預(yù)期使用模式的理解晒哄,發(fā)現(xiàn)最大的改進(jìn)機(jī)會(huì)。某些性能問(wèn)題與所調(diào)查的應(yīng)用程序類型無(wú)關(guān)柒傻。啟動(dòng)時(shí)間長(zhǎng)或?qū)τ脩舨倏v界面的嘗試無(wú)響應(yīng)的應(yīng)用程序會(huì)導(dǎo)致用戶感到他們無(wú)法控制該應(yīng)用程序红符。

另一方面,如果您在Metrics organizerMetricKit中看到的某個(gè)指標(biāo)的最大值表示該應(yīng)用程序已按預(yù)期使用致开,則該值可能并不表示要解決的最重要問(wèn)題双戳。例如糜芳,與背景音頻播放相關(guān)的電源使用對(duì)于播客播放器來(lái)說(shuō)可能不是問(wèn)題峭竣,用戶希望在后臺(tái)播放。但是莫辨,如果您的應(yīng)用是一個(gè)沒(méi)有后臺(tái)玩法的游戲毅访,那么看到該指標(biāo)占主導(dǎo)地位將是令人驚訝的喻粹。

看到該指標(biāo)在指標(biāo)報(bào)告中占主導(dǎo)地位守呜,可能表明可以實(shí)現(xiàn)效率節(jié)省山憨,但最有影響力的變化可能是使用了輔助服務(wù)郁竟,而這些輔助服務(wù)并不影響應(yīng)用程序的主要功能。播客播放器可能很少需要使用粗粒度定位服務(wù)向聽(tīng)眾推薦本地興趣播客蓖议,但是與頻繁跟蹤用戶的精確位置相關(guān)的高能耗可能表明需要進(jìn)行更改勒虾。


Profile Your App

使用Instruments來(lái)配置您的應(yīng)用瘸彤,選擇與您正在考慮的metric相關(guān)的配置文件模板:

通過(guò)在設(shè)備(而不是模擬器)上進(jìn)行性能分析瘟则,可以獲得更高保真度的測(cè)量結(jié)果醋拧。如果您收集的信息表明您的應(yīng)用在特定類別或型號(hào)的設(shè)備上的性能不佳淀弹,請(qǐng)對(duì)該設(shè)備進(jìn)行profile薇溃。

查找導(dǎo)致性能問(wèn)題的代碼,并制定解決方案琉用。請(qǐng)記住邑时,您的更改可能未定位到特定的行或者函數(shù)特姐,并且可能需要對(duì)應(yīng)用程序進(jìn)行重大的體系結(jié)構(gòu)更改到逊。例如,要減輕由于同步下載網(wǎng)絡(luò)資源而導(dǎo)致的掛起脑题,請(qǐng)引入后臺(tái)操作來(lái)處理網(wǎng)絡(luò)(請(qǐng)參閱Downloading Files in the Background)叔遂,并在下載完成后在主線程上執(zhí)行UI更新已艰。


Make the Next Change

實(shí)施您根據(jù)調(diào)查計(jì)劃的更改。 在Instruments中創(chuàng)建一個(gè)''after''配置文件凿叠,您可以將其與“before”配置文件進(jìn)行比較盒件,以確保您的更改帶來(lái)了改善舱禽。 考慮在XCTest中編寫(xiě)性能測(cè)試誊稚,以防止將來(lái)性能下降,并記錄該問(wèn)題存在并已得到解決城瞎。


Compare the Changed Behavior with Your Original Data

在更改您的應(yīng)用程序以解決所觀察到的最重要的性能問(wèn)題之后全谤,請(qǐng)確認(rèn)該更改是否具有預(yù)期的效果,并且改善的水平足夠补憾。 在XcodeMetrics organizer中使用每個(gè)應(yīng)用版本的性能指標(biāo)圖盈匾,以查看更改是改善還是降低削饵。

最后,確定您正在使用的指標(biāo)仍然是最重要的启昧,或者在性能改進(jìn)周期的下一次迭代中數(shù)據(jù)是否指向另一個(gè)度量標(biāo)準(zhǔn)密末。


Additional Resources

這些文章严里,Xcode幫助主題和WWDC會(huì)話視頻包含有關(guān)使用XcodeInstruments評(píng)估和改善應(yīng)用程序性能的更多信息。


Performance Tools and Techniques


Energy Consumption


Topics

1. Memory

2. App Launch Time

3. Disk Writes

4. User Interface Hangs

后記

本篇主要講述了Improving Your App's Performance迷帜,感興趣的給個(gè)贊或者關(guān)注~~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末瞬矩,一起剝皮案震驚了整個(gè)濱河市景用,隨后出現(xiàn)的幾起案子伞插,更是在濱河造成了極大的恐慌,老刑警劉巖舀瓢,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件京髓,死亡現(xiàn)場(chǎng)離奇詭異堰怨,居然都是意外死亡蛇摸,警方通過(guò)查閱死者的電腦和手機(jī)赶袄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門饿肺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)唬格,“玉大人颜说,你說(shuō)我怎么就攤上這事汰聋∶欧啵” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵烹困,是天一觀的道長(zhǎng)玄妈。 經(jīng)常有香客問(wèn)我,道長(zhǎng)髓梅,這世上最難降的妖魔是什么拟蜻? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮枯饿,結(jié)果婚禮上酝锅,老公的妹妹穿的比我還像新娘奢方。我一直安慰自己搔扁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布蟋字。 她就那樣靜靜地躺著稿蹲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鹊奖。 梳的紋絲不亂的頭發(fā)上苛聘,一...
    開(kāi)封第一講書(shū)人閱讀 51,208評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音忠聚,去河邊找鬼设哗。 笑死,一個(gè)胖子當(dāng)著我的面吹牛两蟀,可吹牛的內(nèi)容都是我干的熬拒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼垫竞,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了蛀序?” 一聲冷哼從身側(cè)響起欢瞪,我...
    開(kāi)封第一講書(shū)人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎徐裸,沒(méi)想到半個(gè)月后遣鼓,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡重贺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年骑祟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了回懦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡次企,死狀恐怖怯晕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情缸棵,我是刑警寧澤舟茶,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站堵第,受9級(jí)特大地震影響吧凉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜踏志,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一阀捅、第九天 我趴在偏房一處隱蔽的房頂上張望故硅。 院中可真熱鬧院仿,春花似錦、人聲如沸巴刻。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至摸柄,卻和暖如春颤练,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背驱负。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工嗦玖, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人跃脊。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓宇挫,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親酪术。 傳聞我的和親對(duì)象是個(gè)殘疾皇子器瘪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

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