iPhone: Quanto tempo ci vorrà per la ricerca?
-
05-09-2019 - |
Domanda
Ecco una domanda molto e dritto in avanti: Quanto tempo ci vorrà per cercare un array di stringhe 200-300 a livello locale? Che dire a distanza?
Soluzione
Ricerca? In che senso?
Se si sta semplicemente eseguendo:
[myStringArray containsObject:searchString];
quindi 200-300 stringhe possono essere cercati in pochi microsecondi.
Se siete alla ricerca:
BOOL found = NO
for (NSString *string in myStringArray)
{
if ([string rangeOfString:searchString].location != NSNotFound)
{
found = YES;
break;
}
}
Poi è quasi interamente dipendente dalla lunghezza di ogni stringa, ma per le stringhe di meno di una dozzina carbonizza è circa uguale alla precedente velocità di ricerca.
ricerca Remote è completamente diverso - ma è un colossale spreco di tempo per un'operazione come questa. Esso si basa interamente sulla latenza di rete. Capire in media 250ms ping, un tempo medio per un funzionamento a distanza è di circa mezzo secondo o più semplicemente perché ci vuole molto tempo per generare i pacchetti di rete, inviati tramite la rete, attendere che il server remoto per ricevere, attendere l'remoto server per processo, attendere la risposta e analizzare la risposta.
Se questa domanda fosse un modo rotonda di chiedere: devo solo prendere tutti i 30 archi e la ricerca a livello locale - allora: sì, ricerca a livello locale. In generale:. Ricerca locale è più veloce fino a che il tempo necessario per scaricare tutti i risultati diventa un peso (su reti 3G, io di solito considero 50kB circa il massimo per download veloci trasparenti)
Altri suggerimenti
Se state cercando le stringhe alfabetiche, e il tempo di ricerca è proibitivo, si potrebbe provare a convertire la stringa in un elenco DAWG (grafico parola aciclico diretto, facile da google). Ho fatto questo per una lista molto lunga (circa 170.000 parole) e ottenuto un rapporto di miglioramento di 18.000.
jrdoner
microsecondi. la sua estremamente veloce. Sono rimasto sorpreso, così quando ho scoperto che: p
Questo è per quanto riguarda le ricerche di stringa locali.
Ho implementato la struttura dei dati Trie in stringhe di indice per veloce completamento automatico. http://en.wikipedia.org/wiki/Trie