2009-05-24 13 views

Antwort

1

Suchen? In welchem ​​Sinne?

Wenn Sie mit einfach:

[myStringArray containsObject:searchString]; 

dann 200-300 Strings können in wenigen Mikrosekunden durchsucht werden.

Wenn Sie suchen:

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

Dann ist es fast völlig abhängig von der Länge der einzelnen Strings, aber für Strings weniger als ein paar Dutzend verkohlt es etwa die gleiche wie die vorherige Suchgeschwindigkeit ist.

Die Fernsuche ist völlig anders - aber für eine Operation wie diese ist sie eine kolossale Zeitverschwendung. Es basiert vollständig auf Netzwerklatenz. Bei einem durchschnittlichen Ping von 250 ms beträgt die durchschnittliche Zeit für eine Remote-Operation etwa eine halbe Sekunde oder mehr, nur weil es so lange dauert, die Netzwerkpakete zu generieren, über das Netz zu senden, auf den Empfang des Remote-Servers zu warten und auf die Fernbedienung zu warten Server zu verarbeiten, auf die Antwort zu warten und die Antwort zu parsen.

Wenn diese Frage eine runde Frage war: soll ich nur alle 30 Strings holen und lokal suchen - dann: ja, lokal suchen. Allgemein: Lokale Suche ist schneller, bis die Zeit, die zum Herunterladen aller Ergebnisse benötigt wird, eine Last wird (über 3G halte ich normalerweise 50kB für das Maximum für schnelle transparente Downloads).

2

Wenn Sie alphabetische Zeichenfolgen suchen und die Suchzeit unerschwinglich ist, können Sie versuchen, die Zeichenfolgenliste in eine DAWG zu konvertieren (gerichteter azyklischer Wortgraph, einfach zu googeln). Ich habe dies für eine sehr lange Liste (ungefähr 170.000 Wörter) getan und eine Verbesserungsrate von 18.000 bekommen.

jrdoner

0

Dies ist in Bezug auf lokale String-Suchen.

Ich habe die Trie Datenstruktur implementiert, um Strings für schnelle Autovervollständigung zu indexieren. http://en.wikipedia.org/wiki/Trie

1

Mikrosekunden. es ist extrem schnell. Ich war auch überrascht, als ich davon erfuhr: p

Verwandte Themen