iPhone: сколько времени займет поиск? - PullRequest
0 голосов
/ 25 мая 2009

Вот очень простой вопрос: Сколько времени потребуется для локального поиска в массиве 200-300 строк? А как насчет удаленно?

Ответы [ 4 ]

2 голосов
/ 25 мая 2009

Если вы ищете алфавитные строки, а время поиска непомерно велико, вы можете попробовать преобразовать список строк в DAWG (ориентированный ациклический граф слов, который легко найти в Google). Я сделал это для очень длинного списка (около 170 000 слов) и получил коэффициент улучшения 18 000.

jrdoner

1 голос
/ 04 июня 2009

микросекунд. это очень быстро. Я был удивлен также, когда я узнал об этом: p

1 голос
/ 25 мая 2009

Поиск? В каком смысле?

Если вы просто работаете:

[myStringArray containsObject:searchString];

затем 200-300 строк можно искать в течение нескольких микросекунд.

Если вы ищете:

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

Тогда она почти полностью зависит от длины каждой строки, но для строк длиной менее нескольких десятков символов она примерно равна предыдущей скорости поиска.

Удаленный поиск совершенно другой - но это колоссальная трата времени для такой операции. Он полностью основан на задержке в сети. В среднем при пинге 250 мс среднее время удаленной операции составляет около половины секунды или более только потому, что для генерации сетевых пакетов, отправки по сети, ожидания получения удаленного сервера, ожидания удаленного сервера требуется столько времени. сервер для обработки, дождитесь ответа и проанализируйте ответ.

Если бы этот вопрос представлял собой круговой вопрос: нужно ли мне просто выбрать все 30 строк и выполнить поиск локально - тогда: да, поиск локально. Как правило: локальный поиск выполняется быстрее, пока время, затрачиваемое на загрузку всех результатов, не станет обременительным (в случае 3G я обычно считаю 50 КБ максимумом для быстрой прозрачной загрузки).

0 голосов
/ 25 мая 2009

Это касается локального поиска строки.

Я реализовал структуру данных Trie для индексирования строк для быстрого автозаполнения. http://en.wikipedia.org/wiki/Trie

...