Frage

Hier ist eine sehr direkte Frage:Wie lange dauert es, ein Array mit 200–300 Zeichenfolgen lokal zu durchsuchen?Wie wäre es mit der Ferne?

War es hilfreich?

Lösung

Suchen?In welchem ​​Sinne?

Wenn Sie einfach ausführen:

[myStringArray containsObject:searchString];

dann können 200–300 Zeichenfolgen 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 hängt sie fast vollständig von der Länge jeder Zeichenfolge ab, aber für Zeichenfolgen mit weniger als ein paar Dutzend Zeichen entspricht sie in etwa der vorherigen Suchgeschwindigkeit.

Die Fernsuche ist völlig anders – aber für einen solchen Vorgang eine enorme Zeitverschwendung.Es basiert vollständig auf der Netzwerklatenz.Geht man von einem durchschnittlichen Ping von 250 ms aus, beträgt die durchschnittliche Zeit für einen Remote-Vorgang etwa eine halbe Sekunde oder mehr, nur weil es so lange dauert, die Netzwerkpakete zu generieren, über das Netz zu senden, auf den Empfang durch den Remote-Server zu warten und auf den Remote-Server zu warten Server zum Verarbeiten, warten Sie auf die Antwort und analysieren Sie die Antwort.

Wenn diese Frage eine umständliche Frage wäre:Soll ich einfach alle 30 Zeichenfolgen abrufen und lokal suchen – dann:ja, lokal suchen.Allgemein:Die lokale Suche ist schneller, bis die Zeit, die zum Herunterladen aller Ergebnisse benötigt wird, zur Belastung wird (über 3G halte ich normalerweise 50 KB für das Maximum für schnelle transparente Downloads).

Andere Tipps

Wenn Sie nach alphabetischen Zeichenfolgen suchen und die Suchzeit unerschwinglich ist, können Sie versuchen, die String -Liste in ein DAWG (gerichtete acyclische Wortdiagramm, einfach Google) zu konvertieren. Ich habe dies für eine sehr lange Liste (rund 170.000 Wörter) gemacht und ein Verbesserungsverhältnis von 18.000 erhalten.

Jrdoner

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

Dies betrifft die lokalen String -Suchanfragen.

Ich habe die Trie -Datenstruktur implementiert, um Zeichenfolgen für zu indexieren schnell Autoperation.http://en.wikipedia.org/wiki/trie

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top