调用实例方法而不是类方法通常更快吗?

时间:2010-03-20 15:32:28

标签: iphone objective-c cocoa-touch performance

今天我遇到了一些奇怪的事情:我试图将一个实用工具方法作为一个类方法放入一个Utility类中,这样我就可以简单地调用该方法来生成一个方便的UIView,没有麻烦(不是imageNamed方法,而是另一个) ,更复杂的一个)。那太差了。表现非常糟糕。然后我从中创建了一个实例方法,创建了该类的实例并调用了实例方法。表现突然很好。那太奇怪了!

你对这种东西有什么经验?

1 个答案:

答案 0 :(得分:4)

你的案子还有其他事情发生。方法调用是pretty lightweight,我怀疑类方法和实例方法之间的性能有明显差异。至少,根据我的经验,我从未见过两者之间存在差异。

性能下降的来源通常不是它们最初的样子,因此我建议您针对Instruments或Shark运行您的应用程序以查看此情况下瓶颈的位置。我的猜测是你在类方法方法中分配内存,这种方法没有在实例方法中分配,这是iPhone上最昂贵的操作之一。