iOS效能調優之Analyze靜態分析
目前關於IOS效能優化的教程較少,決定寫一個《IOS效能調優系列》,主要關注與記憶體洩漏、效能優化、流量和電量分析幾個方面。
XCode已經提供了非常強大的效能調優工具,結合幾個第三方工具和一些技巧,進行效能優化非常簡單。
第一篇先寫寫最簡單的,Analyze靜態分析。
相信IOS開發者在App進行Build或Archive時,會產生很多編譯警告,這些警告是編譯時產生的,靜態分析的過程也類似,在XCode Product選單下,點選Analyze對App進行靜態分析。
Analyze主要分析以下四種問題:
1、邏輯錯誤:訪問空指標或未初始化的變數等;
2、記憶體管理錯誤:如記憶體洩漏等;
3、宣告錯誤:從未使用過的變數;
4、Api呼叫錯誤:未包含使用的庫和框架。
Analyze記憶體洩漏分析:
宣告錯誤、邏輯錯誤、Api呼叫錯誤基本在編譯時都會有警告,Analyze的主要優勢在於靜態分析記憶體洩漏及程式碼邏輯錯誤。
比如在開啟arc的環境下,輸入以下一段程式碼:
//擷取部分影像 +(UIImage*)getSubImage:(unsigned long)ulUserHeader { UIImage * sourceImage = [UIImage imageNamed:@"header.png"]; CGFloat height = sourceImage.size.height; CGRect rect = CGRectMake(0 + ulUserHeader*height, 0, height, height); CGImageRef imageRef = CGImageCreateWithImageInRect([sourceImage CGImage], rect); UIImage* smallImage = [UIImage imageWithCGImage:imageRef]; //CGImageRelease(imageRef); return smallImage; }
用註釋註釋掉CGImageRelease(imageRef)這行,雖然開起了arc,不過仍然會導致imageRef物件洩漏。
使用Analyze進行分析,在導航欄Analyze選擇Analyzer檢視分析結果:
Analyze已經分析出imageRef物件有記憶體洩漏,這種情況在編譯時是無法發現的。
如果你沒有使用ARC,那麼Analyze更有用。
Analyze的其他三種分析也可以使用,相比編譯器給出的資訊更明確。
Analyze邏輯錯誤監測:
這種情況在codereview時也較難發現,可以藉助Analyze。
如上程式碼,當Tag不等於1、2和3的時候,就會出現很問題了。
Analyze還給出了箭頭提示:len is a garbage value。建議在宣告變數時,同時進行初始化。
相關文章
- iOS效能調優iOS
- 資料庫效能調優之始: analyze統計資訊資料庫
- Linux系統效能調優之效能分析Linux
- 【效能調優】效能測試、分析與調優基礎
- 效能測試之測試分析與調優
- 調優之iostatiOS
- 效能調優學習之硬體調優
- iOS 常用除錯方法:靜態分析iOS除錯
- PHP 效能分析(三): 效能調優實戰PHP
- TiDB 效能分析&效能調優&優化實踐大全TiDB優化
- 使用 ASDK 效能調優 - 提升 iOS 介面的渲染效能iOS
- 效能調優命令之jstackJS
- 效能測試瓶頸之CPU問題分析與調優
- golang 效能調優分析工具 pprof (上)Golang
- golang 效能調優分析工具 pprof(下)Golang
- 【DSL】Elasticsearch之Analyze(分析過程)Elasticsearch
- iOS-靜態庫聯調中的若干問題iOS
- [譯] 提高 10 倍效能:優化靜態網站優化網站
- Linux效能調優命令之freeLinux
- Android效能調優工具之 TraceViewAndroidView
- JVM效能調優,記憶體分析工具JVM記憶體
- JavaEE程式在Glassfish的效能調優分析Java
- 實戰iOS-objectivec&swift靜態程式碼分析iOSObjectSwift
- PHP 效能分析第三篇: 效能調優實戰PHP
- 效能測試知多少---效能分析與調優的原理
- 六、Android效能優化之UI卡頓分析之渲染效能優化Android優化UI
- MySQL調優效能監控之show profileMySql
- MySQL調優效能監控之performance schemaMySqlORM
- Oracle效能調優之FreeList和HWMOracle
- Oracle效能調優 之FreeList和HWMOracle
- Spark 效能調優--資源調優Spark
- Spark 效能調優--Shuffle調優 SortShuffleManagerSpark
- 【效能優化】ANALYZE 與DBMS_STATS的區別優化
- iOS核心動畫高階技術(十二) 效能調優iOS動畫
- 效能調優(cpu/IO/JVM記憶體分析)JVM記憶體
- Linux伺服器效能分析與調優Linux伺服器
- linux 效能監控分析以及調優(top)Linux
- AbsInt — 確保程式碼安全的靜態效能分析工具