性能指標:
- 內存 ,應用運行所需的RAM最小值,以及應用小號的內存平均值和峯值。
- 電量消耗
- 初始化時間
- 執行速度
- 響應速度
- 本地存儲
- 互操作性
- 網絡環境
- 帶寬
- 數據刷新
- 多用戶支持
- 單點登錄
- 安全
- 崩潰
性能的分析(分析的手法)
- 採樣,採取一定的週期內的狀態。
- 埋點,通過代碼記錄細節信息,使採樣更加精確。(埋點注入額外代碼,對性能有一定影,對內存或速度(或二者同時)造成傷害。
測量
測量性能指標的參數,並通過不同類型的分析,在測量性能過程中找出真正存在問題的地方。
不要過早的進行優化,提升程序效率的方向和事件浪費太多事件。
設置工程與代碼
針對配置、安裝和代碼實現有三類任務:
- 構建與發佈,確保能夠輕鬆構建和發佈應用;
- 可測試性,確保代碼可以同時在模擬數據和真實數據上工作;
- 可跟蹤性,確保能夠明確問題發生的位置和代碼行爲來處理錯誤。
發佈與構建
改進後的系統和工具可以加速拉去依賴的信息,加速構建和發佈用於測試或發佈的產品。基於Ruby語言實現的CocoaPods
實際上是Objective-C和Swift工程的依賴管理器
。CocoaPods與Xcode命令行工具相集成,可用於構建與發佈。
可測試性
每個應用都包含多個協同工作的組件。設計良好的系統應遵循低耦合
和高內聚
,允許替換任意或者全部組件的依賴。
可以通過模擬依賴項項對每個組件進行隔離測試。一般來說測試有兩種類型。
單元測試,驗證每個代碼單元在隔離的環境下的操作。在特定環境中輸入不同的數據反覆調試一些方法,以評估代碼表現。
功能測試,驗證組件在最終集成的安裝包中的操作。可以再軟件最終發佈版本中驗證,也可以爲某個爲測試而構建的參考應用中驗證。
可跟蹤性
開發階段,埋點可以幫助我們確定性能優化的優先級,提高對問題現場的還原能力,並提供更多的調試信息。
崩潰報告專注於從軟件產品版本中收集調試信息。
設置崩潰報告
崩潰報告系統收集用於分析應用的調試日誌。
對應用埋點
對依賴進行抽象化和封裝是個好主意。這樣就可以在最後再進行切換,甚至 可以在作出最終決定之前同時使用多個系統。這在項目處於評估階段且存在 多個備選方案時尤爲有用。
埋點不應該取代日誌。日誌可以非常詳細。但因爲向服務器報告時會消耗網 絡資源,所以你應該儘可能少地埋點。埋點和過度埋點之間並沒有清晰的分界線。一開始應僅對少量報告進行埋 點,然後隨着時間的推進逐步增加埋點的覆蓋率。
埋點可以精確的指出哪部分功能使用頻率更高。
日誌
日誌和埋點之間存在着細微的差別。埋點可以看作日誌的子集。被埋點的任何數據都應該 記錄在日誌中。
埋點
承擔了爲聚合分析發佈關鍵性能數據的職責。
日誌
提供了用於在不同級別跟蹤應用 的細節信息。
埋點數據會發送到服務器,日誌是記錄在設備本地。