字符串比较可能代价高昂。有一些统计数据表明,可以通过首先比较字符串大小来消除非常高百分比的字符串比较。所以我很想知道 NSString compare: 方法是否考虑到了这一点。有人知道吗?
问问题
137 次
2 回答
2
根据这里的消息来源(这只是一种实现,其他实现可能会有所不同),compare
不首先检查长度,这实际上是有道理的,因为它不是平等检查。由于它返回小于/等于/大于返回码,它必须检查字符,即使长度相同。
如果长度不同,纯isEqual
类型方法可能能够简化字符检查,但compare
没有那么奢侈。
它确实会针对零对长度进行某些检查,但不会对两个长度进行相互比较。
于 2013-05-04T06:56:07.000 回答
1
是的,它确实。它还在此之前检查指针是否相等(包括常量字符串情况以及由于字符串唯一性和字符串 ROM 而导致的其他一些情况)。
(编辑)这个答案适用于 -isEqualToString:,而不是 -compare:。我看错了
于 2013-05-04T06:49:31.773 回答