@ yngvedh является верным в том смысле, что NSDictionary
имеет время поиска O (1) (как ожидается для структуры карты). Однако после некоторого тестирования вы можете видеть, что NSSet
также имеет время поиска O (1). Вот основной тест, который я сделал, чтобы придумать это: http://pastie.org/933070
По сути, я создаю 1 000 000 строк, а затем время, которое у меня уходит на получение 100 000 случайных строк как из словаря, так и из набора. Когда я запускаю это несколько раз, набор на самом деле выглядит быстрее ...
dict lookup: 0.174897
set lookup: 0.166058
---------------------
dict lookup: 0.171486
set lookup: 0.165325
---------------------
dict lookup: 0.170934
set lookup: 0.164638
---------------------
dict lookup: 0.172619
set lookup: 0.172966
В вашем конкретном случае, я не уверен, что любой из них будет тем, что вы хотите. Вы говорите, что хотите, чтобы все эти объекты были в памяти, но действительно ли они вам нужны, или вам просто нужно несколько из них? Если это последнее, то я, вероятно, прочитал бы файл и создал бы идентификатор объекта для сопоставления смещения файла (т. Е. Запомнил, где находится каждый идентификатор объекта в файле). Затем вы можете посмотреть, какие из них вы хотите, и использовать смещение файла, чтобы перейти к нужному месту в файле, проанализировать эту строку и двигаться дальше. Это работа для NSFileHandle
.