0

字符串比较可能代价高昂。有一些统计数据表明,可以通过首先比较字符串大小来消除非常高百分比的字符串比较。所以我很想知道 NSString compare: 方法是否考虑到了这一点。有人知道吗?

4

2 回答 2

2

根据这里的消息来源(这只是一种实现,其他实现可能会有所不同),compare不首先检查长度,这实际上是有道理的,因为它不是平等检查。由于它返回小于/等于/大于返回码,它必须检查字符,即使长度相同。

如果长度不同,纯isEqual类型方法可能能够简化字符检查,但compare没有那么奢侈。

它确实会针对零对长度进行某些检查,但不会对两个长度进行相互比较。

于 2013-05-04T06:56:07.000 回答
1

是的,它确实。它还在此之前检查指针是否相等(包括常量字符串情况以及由于字符串唯一性和字符串 ROM 而导致的其他一些情况)。

(编辑)这个答案适用于 -isEqualToString:,而不是 -compare:。我看错了

于 2013-05-04T06:49:31.773 回答