《高效能iOS應用開發》讀書筆記

Groz發表於2017-04-03

效能指標:

  • 記憶體 ,應用執行所需的RAM最小值,以及應用小號的記憶體平均值和峰值。
  • 電量消耗
  • 初始化時間
  • 執行速度
  • 響應速度
  • 本地儲存
  • 互操作性
  • 網路環境
  • 頻寬
  • 資料重新整理
  • 多使用者支援
  • 單點登入
  • 安全
  • 崩潰

效能的分析(分析的手法)

  • 取樣,採取一定的週期內的狀態。
  • 埋點,通過程式碼記錄細節資訊,使取樣更加精確。(埋點注入額外程式碼,對效能有一定影,對記憶體或速度(或二者同時)造成傷害。

測量

測量效能指標的引數,並通過不同型別的分析,在測量效能過程中找出真正存在問題的地方。

不要過早的進行優化,提升程式效率的方向和事件浪費太多事件。


設定工程與程式碼

針對配置、安裝和程式碼實現有三類任務:

  • 構建與釋出,確保能夠輕鬆構建和釋出應用;
  • 可測試性,確保程式碼可以同時在模擬資料和真實資料上工作;
  • 可跟蹤性,確保能夠明確問題發生的位置和程式碼行為來處理錯誤。

釋出與構建

改進後的系統和工具可以加速拉去依賴的資訊,加速構建和釋出用於測試或釋出的產品。基於Ruby語言實現的CocoaPods實際上是Objective-C和Swift工程的依賴管理器。CocoaPods與Xcode命令列工具相整合,可用於構建與釋出。

可測試性

每個應用都包含多個協同工作的元件。設計良好的系統應遵循低耦合高內聚,允許替換任意或者全部元件的依賴。
可以通過模擬依賴項項對每個元件進行隔離測試。一般來說測試有兩種型別。

單元測試,驗證每個程式碼單元在隔離的環境下的操作。在特定環境中輸入不同的資料反覆除錯一些方法,以評估程式碼表現。
功能測試,驗證元件在最終整合的安裝包中的操作。可以再軟體最終釋出版本中驗證,也可以為某個為測試而構建的參考應用中驗證。

可跟蹤性

開發階段,埋點可以幫助我們確定效能優化的優先順序,提高對問題現場的還原能力,並提供更多的除錯資訊。

崩潰報告專注於從軟體產品版本中收集除錯資訊。

設定崩潰報告

崩潰報告系統收集用於分析應用的除錯日誌。

對應用埋點

對依賴進行抽象化和封裝是個好主意。這樣就可以在最後再進行切換,甚至 可以在作出最終決定之前同時使用多個系統。這在專案處於評估階段且存在 多個備選方案時尤為有用。

埋點不應該取代日誌。日誌可以非常詳細。但因為向伺服器報告時會消耗網 絡資源,所以你應該儘可能少地埋點。埋點和過度埋點之間並沒有清晰的分界線。一開始應僅對少量報告進行埋 點,然後隨著時間的推進逐步增加埋點的覆蓋率。

埋點可以精確的指出哪部分功能使用頻率更高。

日誌

日誌和埋點之間存在著細微的差別。埋點可以看作日誌的子集。被埋點的任何資料都應該 記錄在日誌中。
埋點承擔了為聚合分析釋出關鍵效能資料的職責。
日誌提供了用於在不同級別跟蹤應用 的細節資訊。
埋點資料會傳送到伺服器,日誌是記錄在裝置本地。

相關文章