天天看點

iOS開發性能相關

性能名額:

記憶體 ,應用運作所需的RAM最小值,以及應用小号的記憶體平均值和峰值。

電量消耗

初始化時間

執行速度

響應速度

本地存儲

互操作性

網絡環境

帶寬

資料重新整理

多使用者支援

單點登入

安全

崩潰

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

  • 采樣,采取一定的周期内的狀态。
  • 埋點,通過代碼記錄細節資訊,使采樣更加精确。(埋點注入額外代碼,對性能有一定影,對記憶體或速度(或二者同時)造成傷害。

測量

測量性能名額的參數,并通過不同類型的分析,在測量性能過程中找出真正存在問題的地方。

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

設定工程與代碼

針對配置、安裝和代碼實作有三類任務:

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

釋出與建構

改進後的系統和工具可以加速拉去依賴的資訊,加速建構和釋出用于測試或釋出的産品。基于Ruby語言實作的

CocoaPods

實際上是Objective-C和Swift工程的

依賴管理器

。CocoaPods與Xcode指令行工具相內建,可用于建構與釋出。

可測試性

每個應用都包含多個協同工作的元件。設計良好的系統應遵循

低耦合

高内聚

,允許替換任意或者全部元件的依賴。

可以通過模拟依賴項項對每個元件進行隔離測試。一般來說測試有兩種類型。

單元測試,驗證每個代碼單元在隔離的環境下的操作。在特定環境中輸入不同的資料反複調試一些方法,以評估代碼表現。

功能測試,驗證元件在最終內建的安裝包中的操作。可以再軟體最終釋出版本中驗證,也可以為某個為測試而建構的參考應用中驗證。

可跟蹤性

開發階段,埋點可以幫助我們确定性能優化的優先級,提高對問題現場的還原能力,并提供更多的調試資訊。

崩潰報告專注于從軟體産品版本中收集調試資訊。

設定崩潰報告

崩潰報告系統收集用于分析應用的調試日志。

對應用埋點

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

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

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

日志

日志和埋點之間存在着細微的差别。埋點可以看作日志的子集。被埋點的任何資料都應該 記錄在日志中。

埋點

承擔了為聚合分析釋出關鍵性能資料的職責。

日志

提供了用于在不同級别跟蹤應用 的細節資訊。

埋點資料會發送到伺服器,日志是記錄在裝置本地。