2013-05-04 2 views
0

문자열 비교는 비용이 많이들 수 있습니다. 문자열의 크기를 비교하면 매우 높은 비율의 문자열 비교를 제거 할 수 있다는 통계가 있습니다. 그래서 NSString 비교 : 메서드를 고려 여부를 알고 궁금 해서요. 누구 알아?NSString 비교 효율

답변

2

소스에 따르면 (구현이 다르지만 다른 기능을 수행 할 수도 있음) compare은 길이를 먼저 확인하지 않습니다. 실제로는 평등 검사가 아니기 때문에 실제로 의미가 있습니다. less-than/equal-to/greater-than 리턴 코드를 리턴하므로 문자 길이가 같더라도 입니다.

길이가 다른 경우 순수한 isEqual 유형의 방법은 문자 검사를 단축 할 수 있지만 compare에는 그 고급 스러움이 없습니다.

0에 대한 길이의 특정 검사는 수행하지만 서로에 대한 두 길이의 비교는 수행하지 않습니다.

+0

이러한 소스는 OSX에서 사용되는 소스가 아니지만 여전히 유용한 것입니다 –

+0

@paxdiablo 흥미로운 자료입니다. isEqualToString : 먼저 해당 확인을 수행합니다. – stephen

1

예. 또한 포인터가 평등한지 (문자열 상수와 문자열 ROM 때문에 상수 문자열 케이스와 일부 문자열을 다룹니다) 체크합니다.

(편집)이 답변은 -isEqualToString :, -compare :에 적용되지 않습니다. 내가 잘못 읽었습니다

+0

이 소유권 주장을 뒷받침하는 문서가 있습니까? – stephen

+0

@stephen opensource.apple.com에서'CFStringRef' 소스를 확인하십시오. 'NSString'이 클래스 클러스터 인 동안, 당신은 결국 그 구현을 호출하게 될 것입니다. – JustSid

+0

OSS 인 CFString 소스가 있습니다. 그것은 모든 NSString 구현을 다루지는 않는다. 당신은 그들을 위해 Foundation을 분해해야 할 것입니다. (Hopper는 그것을위한 좋은 도구입니다.) –