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