最后還是要提一下,“過早的優(yōu)化是萬惡之源”,在需求未定,性能問題不明顯時,沒必要嘗試做優(yōu)化,而要盡量正確的實現(xiàn)功能。做性能優(yōu)化時,也最好是走修改代碼 -> Profile -> 修改代碼這樣一個流程,優(yōu)先解決最值得優(yōu)化的地方。
如果你需要一個明確的 FPS 指示器,可以嘗試一下?KMCGeigerCounter。對于 CPU 的卡頓,它可以通過內(nèi)置的 CADisplayLink 檢測出來;對于 GPU 帶來的卡頓,它用了一個 1x1 的 SKView 來進(jìn)行監(jiān)視。這個項目有兩個小問題:SKView 雖然能監(jiān)視到 GPU 的卡頓,但引入 SKView 本身就會對 CPU/GPU 帶來額外的一點的資源消耗;這個項目在 iOS 9 下有一些兼容問題,需要稍作調(diào)整。
我自己也寫了個簡單的 FPS 指示器:FPSLabel?只有幾十行代碼,僅用到了 CADisplayLink 來監(jiān)視 CPU 的卡頓問題。雖然不如上面這個工具完善,但日常使用沒有太大問題。
最后,用 Instuments 的 GPU Driver 預(yù)設(shè),能夠?qū)崟r查看到 CPU 和 GPU 的資源消耗。在這個預(yù)設(shè)內(nèi),你能查看到幾乎所有與顯示有關(guān)的數(shù)據(jù),比如 Texture 數(shù)量、CA 提交的頻率、GPU 消耗等,在定位界面卡頓的問題時,這是最好的工具。
更多建議: