2009-05-24 2 views

답변

1

검색? 어떤 의미에서?

당신은 단순히 실행하는 경우 :

[myStringArray containsObject:searchString]; 

는 200 ~ 300 문자열은 몇 마이크로 초에서 검색 할 수 있습니다.

당신이 검색하는 경우 :

BOOL found = NO 
for (NSString *string in myStringArray) 
{ 
    if ([string rangeOfString:searchString].location != NSNotFound) 
    { 
     found = YES; 
     break; 
    } 
} 

그런 다음 각 문자열의 길이에 거의 전적으로 의존하지만, 수십보다 문자열이 이전의 검색 속도와 거의 같다가 문자.

원격 검색은 완전히 다르지만 이와 같은 작업에 엄청난 시간 낭비가 있습니다. 네트워크 대기 시간을 기반으로합니다. 평균 250ms ping으로 계산하면 원격 작업의 평균 시간은 0.5 초 정도입니다. 네트워크 패킷을 생성하는 데 오랜 시간이 걸리고, 네트워크를 통해 전송하고, 원격 서버가 수신하기를 기다리고, 원격 서버를 기다립니다 서버를 처리하고, 응답을 기다리고 응답을 구문 분석하십시오.

이 질문에 대한 질문은 다음과 같습니다. 30 개의 문자열을 모두 가져 와서 로컬로 검색하면됩니까? 예 : 로컬로 검색하십시오. 일반적으로 : 지역 검색은 모든 결과를 다운로드하는 데 걸리는 시간이 부담이 될 때까지 빨라집니다 (3G를 통해, 나는 보통 빠른 다운로드에 대해 최대 50kB를 고려합니다).

2

알파벳 문자열을 검색 할 때 검색 시간이 너무 길면 문자열 목록을 DAWG (Google로 쉽게 전환되는 비순환 단어 그래프)로 변환 해보십시오. 나는 이것을 매우 긴 목록 (약 170,000 단어)으로 작성하여 18,000의 개선 비율을 얻었다.

jrdoner

0

이것은 로컬 문자열 검색에 관한 내용입니다.

에 대한 색인 문자열에 Trie 데이터 구조를 구현했습니다. 자동 완성입니다. http://en.wikipedia.org/wiki/Trie

1

마이크로 초. 그 extreamly 빠른. 나는 그것에 대해서 알았을 때 놀랐다 : p