NSString与NSMutableString对串联的性能影响是什么?

时间:2011-03-24 14:19:33

标签: objective-c performance coding-style nsstring

NSString与NSMutableString对连接有什么性能影响?

在Java中,连接两个字符串可能会导致编译器实现两个字符串,从而使其更加优化。如果我使用initWithFormat NSString方法来连接两个文字字符串,那么在Objective-C中是否会进行任何此类优化?

此外,我使用NSString而不是NSMutableString将变量与文字连接,是否会影响性能?

以下是一个例子:

if (![self.addressField.text hasPrefix:@"http"])
{
    NSString* newAddress = [[NSString alloc] 
       initWithFormat:@"http://%@", self.addressField.text];
    [self.addressField setText:newAddress];
    [newAddress release];
}

我认为NSMutableString更类似于Java中的StringBuilderStringBuffer类。这些类更适合串联多个或不确定数量的字符串。如果您在编译时知道只连接 两个字符串,为什么不使用您已经使用的类(NSString)连接它们?

1 个答案:

答案 0 :(得分:-1)

如果你想找出哪个更有效,记录一个时间戳,然后在循环中调用1000次,然后将其更改为NSMutableString并执行相同的操作,您将看到哪个更快。事物的计划是如此小的差异。但如果你想要,你可以减少代码行数:

if (![self.addressField.text hasPrefix:@"http"]){
    [self.addressField setText: [NSString stringWithFormat:@"http://%@",self.addressField.text]];
}