移動應(yīng)用的性能
1、定義性能
從技術(shù)角度來說,性能是一個很模糊的概念:消耗的內(nèi)存???節(jié)約了流量?應(yīng)用使用流暢?省電?總之,高性能有多重的含義和解釋。
2、性能指標(biāo)
內(nèi)存
內(nèi)存涉及運行應(yīng)用所需的RAM最小值,以及應(yīng)用消耗的內(nèi)存平均值和峰值。最小內(nèi)存值會嚴(yán)重限制硬件,而更高的內(nèi)存平均值和峰值意味著更多的后臺應(yīng)用會被強制關(guān)閉。同事還要確保沒有泄露內(nèi)存,隨著時間流逝而持續(xù)增長的內(nèi)存消耗意味著,應(yīng)用很可能會因為內(nèi)存不足的異常而崩潰。
電量消耗
在編寫高性能代碼時,電量消耗時一個需要重點考慮的重要因素。電量消耗不僅僅與計算CPU周期有關(guān),還包括高效地使用硬件。除了要實現(xiàn)電量消耗最小化,還要確保不會影響用戶體驗。
初始化時間
用戶在啟動應(yīng)用的時候,應(yīng)用執(zhí)行任務(wù)所消耗的時間就是應(yīng)用的初始化時間。通常我們要控制好這個時間,不能讓用戶在任務(wù)執(zhí)行時總是等待。
應(yīng)用啟動執(zhí)行的動作:如,檢查應(yīng)用是否為首次啟動,檢查用戶是否登錄....
執(zhí)行速度
一旦啟動應(yīng)用,用戶總是很迫切的希望盡快工作,盡可能短時間處理事情。如上傳圖片時,希望快點上傳。
響應(yīng)速度
通常用戶選擇一款應(yīng)用,基本都會選擇響應(yīng)速度最快的應(yīng)用。即響應(yīng)用戶交互的速度。
本地存儲
提供離線瀏覽的能力,如在無網(wǎng)絡(luò)或者設(shè)備離線情況下查看歷史郵件,離線視頻,離線音頻等。如果應(yīng)用中使用了本地存儲,那么需要一個清除緩存的功能,避免用戶頻繁卸載應(yīng)用。
互操作性
用戶可能會使用多個應(yīng)用完成某個任務(wù),這就需要這些應(yīng)用直接提供互操作的能力。例如,相冊可能需要一個修圖軟件修圖,相冊需要另一個應(yīng)用來剪輯視頻。
網(wǎng)絡(luò)環(huán)境
移動設(shè)備會在不同網(wǎng)絡(luò)環(huán)境下使用,為了確保提供最好的用戶體驗,需要適應(yīng)各種網(wǎng)絡(luò)環(huán)境:如 高速穩(wěn)定,低速穩(wěn)定,高速不穩(wěn)定,低速不穩(wěn)定,無網(wǎng)絡(luò)。
帶寬
人們在不同的網(wǎng)絡(luò)環(huán)境下使用移動設(shè)備,網(wǎng)速從每秒數(shù)千字節(jié)到每秒數(shù)十兆字節(jié)。因此,帶寬的優(yōu)化使用是定義應(yīng)用質(zhì)量的一個關(guān)鍵參數(shù)。
數(shù)據(jù)刷新
數(shù)據(jù)刷新的頻率和每次傳輸?shù)臄?shù)據(jù)量決定數(shù)據(jù)傳輸總量,如果傳輸?shù)臄?shù)據(jù)過大,用戶流量勢必會快速耗盡,流量消耗過快影響用戶體驗。
多用戶支持
提供多用戶添加、更新、切換,如QQ
單點登錄
用戶登錄了一個應(yīng)用,只需要點擊一次,就可以登錄其他的應(yīng)用中。這個過程不僅需要支持跨應(yīng)用的數(shù)據(jù)共享,還需要分享狀態(tài)、跨應(yīng)用同步等。例如,如果用戶注銷了其中的某個應(yīng)用,則通過SSO登錄的所有其他應(yīng)用也要注銷掉。
安全
本地數(shù)據(jù)和功效數(shù)據(jù)加密,保障安全。
崩潰
應(yīng)用可能會崩潰,過度優(yōu)化也會導(dǎo)致崩潰。高性能應(yīng)用應(yīng)盡可能的避免崩潰,還應(yīng)該在崩潰發(fā)生時優(yōu)雅地恢復(fù),尤其是在進(jìn)行某個操作的過程中發(fā)生崩潰時。
應(yīng)用性能分析
1、采樣
是指以一定的周期間隔采集狀態(tài),這通常需 要借助工具。
2、埋點
通過修改代碼,記錄細(xì)節(jié)信息的埋點能夠提供比采樣更精準(zhǔn)的結(jié)果。你既可以在關(guān)鍵部分主動埋點,也可以在性能分析或處理用戶反饋時有針對性埋點,以便解決問題。(因為埋點需要注入額外的代碼,所以它一定會影響應(yīng)用的性能,對內(nèi)存或速度造成損害)。
測量
1、設(shè)置工程和代碼
構(gòu)建與發(fā)布 ( 確保能夠輕松地構(gòu)建和發(fā)布應(yīng)用)
可測試性 ( 確保你的代碼能夠同時在模擬數(shù)據(jù)和真實數(shù)據(jù)之上工作,其中包括能夠模擬真實場景的 隔離環(huán)境)
可跟蹤性( 確保你能夠通過明確問題發(fā)生的位置和代碼行為來處理錯誤)。
2、設(shè)置崩潰報告
Flurry(http://www.furry.com)、Bugly (https://bugly.qq.com/v2/)
3、對應(yīng)用埋點
對應(yīng)用進(jìn)行埋點是了解用戶行為的一個重要步驟,但更重要的目的是識別應(yīng)用的關(guān)鍵路徑。注入特定的代碼以記錄關(guān)鍵指標(biāo)是提升應(yīng)用性能的重要步驟。
4、日志
日志提供了用于在不同級別跟蹤應(yīng)用 的細(xì)節(jié)信息,比如?debug、Verbose、info、warning?和?Error。