在Objective-C中調用方法/屬性的性能開銷正在破壞我的iOS應用程序的性能; Xcode分析器(aka,Instruments)將延遲的70%歸因於objc_msgSend
,_retain
和_release
。減少objc_msgSend並保留/釋放調用
在我的代碼,到目前爲止,我讓約1100打到我類的實例方法renderSprite(XRSprite)
這是renderSprite(XRSprite,int,int,int)
一個重載的方法,依次調用不少於五種方法,其中許多來自XRSprite
訪問性能。正如你可以想象的那樣,有很多消息被髮送。
除了用C++重寫代碼的關鍵部分外,我還有其他選擇嗎?
你的意思是'objc_msgSend()'? – 2012-12-24 12:04:03
**當調度方法成爲問題時,你做錯了!**真的 我會用儀器看什麼要優化。通常關鍵是使用mutableBuffers或重用對象 - > **,因爲什麼是昂貴的分配** –
我不同意這個問題的結束。不過,我認爲這個問題需要一些改進。首先,'renderSprite(XRSprite)'和'renderSprite(XRSprite,int,int,int)'不會描述Objective-C中的實例方法;在Objective-C中,我們不會通過將方括號放在方法名稱末尾來調用方法。你需要發佈真實的代碼。其次,如果您想談談您的分析器結果,請發佈您的分析器結果 - 無論是通過copy'n'paste還是張貼屏幕截圖。 –