NSDictionary VS NSArray + NSPredicate: что быстрее / рекомендуется - PullRequest
4 голосов
/ 14 сентября 2011

Что быстрее добраться до объекта из коллекции?

а. Поиск в NSDictionary с [dictionary objectForKey:key]; или

б. Поиск в NSArray с [NSPredicate predicateWithFormat:@"someKey like %@",someKeyValue];

В обоих случаях я создаю коллекции.

Привет!

1 Ответ

4 голосов
/ 14 сентября 2011

При условии хорошо запрограммированного словаря, это будет намного быстрее.Хороший словарь должен найти ваш ключ в постоянном времени O (1), используя хэш-карту.Если массив отсортирован, знает это и использует бинарный поиск, он может оптимизироваться для бинарного поиска в O (log n), в противном случае ему придется линейно просматривать каждый объект, операцию O (n).Лучше всего, если бы вы могли как-то превратить ключ в прямой индекс, возможно, с одноразовой сортировкой.

...