在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还是张贴屏幕截图。 –