字符串比较可能代价高昂。有一些统计数据表明,首先比较字符串大小可以消除非常高的字符串比较百分比。所以我很想知道NSString compare:方法是否考虑到了这一点。谁知道?
答案 0 :(得分:2)
根据来源here(这只是一个实现,其他可能采取不同的行为),compare
不首先检查长度,这实际上是有意义的,因为它不是一个等式检查。当它返回一个小于/等于/大于返回代码时,它有来检查字符,即使长度是相同的。
如果长度不同,纯isEqual
- 类型方法可以快速进行字符检查,但compare
没有那么奢侈。
它确实对零的长度进行了某些检查,但没有将这两个长度相互比较。
答案 1 :(得分:1)
是的。它还会在此之前检查指针相等性(包括常量字符串大小写和其他一些由于字符串唯一化和字符串ROM)。
(编辑)这个答案适用于-isEqualToString :,而不是-compare:。我误读了