可变对象与不可变对象的性能

时间:2012-08-22 09:43:31

标签: objective-c performance cocoa

我想问一下那里的所有Cocoa老手 - 在以下情况下使用mutable和immutable对象之间是否有性能差异

  • NSString的{​​{1}}与stringByAppendingString:的{​​{1}}
  • NSMutableString的{​​{1}}与appendString:的{​​{1}}
  • ...

谢谢你,编码愉快!

1 个答案:

答案 0 :(得分:2)

这个问题很难回答:NSArrayNSString不是实际的实现,它们是类集群,NSMutableArrayNSMutableString也是如此。下面的真实实现无法确定,因此性能难以比较。 你可能找不到那个肯定的答案。

但我猜测是:stringByAppendingStringarrayByAddingObject创建包含修改的新对象,将当前项目复制到内存中的新位置,NSMutableArrayNSMutableString应该有更好的性能,因为它们是为了防止在可能的情况下进行复制而构建的(实际上并非如此,因为NSMutableArray可能会在添加元素时重新复制内存但不是每次都重复)。

我认为你应该相信CoreFoundation编码器:你不想改变对象吗?使用mutables一个。