0

文字列の比較はコストがかかる可能性があります。最初に文字列のサイズを比較することで、非常に高い割合の文字列比較を排除できるという統計がいくつか出回っています。したがって、NSString の compare: メソッドがこれを考慮しているかどうかを知りたいと思っています。誰でも知っていますか?

4

2 に答える 2

2

ここの情報源によると(これは単なる 1 つの実装であり、他の実装では異なる動作をする可能性があります)、compare最初に長さをチェックしません。これは等価チェックではないため、実際には意味があります。より小さい/等しい/より大きいリターン コードを返すため、長さが同じであっも、文字をチェックする必要があります。

純粋なisEqual型のメソッドは、長さが異なる場合に文字チェックを省略できる場合がありますが、そのような余裕compareはありません。

ゼロに対する長さの特定のチェックは行いますが、2 つの長さの比較は行いません。

于 2013-05-04T06:56:07.000 に答える
1

はい、そうです。また、その前にポインターの等価性もチェックします (これは、定数文字列のケースと、文字列の一意化と文字列 ROM によるその他のケースをカバーします)。

(編集) この回答は、-compare: ではなく、-isEqualToString: に適用されます。読み違えた

于 2013-05-04T06:49:31.773 に答える