目标C类别和执行和打字的速度

时间:2012-03-21 04:33:46

标签: objective-c performance

我正在考虑用我自己的代码包装经常使用的Cocoa对象选择器来提高我的打字速度。一个典型的例子就是修剪白色空间选择器: -

[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

我的选择是: -

(1)将其包装在NSSTring类别中,如此

- (NSString *)Trim 
{
    return [self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}

(2)将其定义为宏,而不是像

那样
#define TRIM(X) [X stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]

我更喜欢上面的选项(1),但有任何表现命中吗?

1 个答案:

答案 0 :(得分:3)

该类别极不可能在性能方面产生任何重大甚至显着的差异。

类别方法需要一个额外的消息调度,所以是的,它将比宏慢。但是ObjC消息调度程序是整个操作系统中最优化的代码之一 - 它绝不是慢的。

但是,如果您多次使用该宏,您的代码大小将比该类别增加更多,这可能会产生更糟糕的副作用。 (但这不是很多代码,所以需要很多实例来做出真正的改变。)

所以,像往常一样,这完全取决于你的确切情况 - 你必须测量它并看到。如果能真正衡量差异,我会感到惊讶。