Я работаю над проектом в Swift, используя dictionary
.
Этот словарь имеет тип [String : [Posting]]
.У меня есть около 200 тысяч различных «терминов» (ключей) для вставки, и для каждого термина у меня есть от 500 до 1000 объектов для добавления в список.Я знаю, что это странная практика, но у меня нет выбора, и я должен разобраться со всеми этими элементами.
Проблема в том, что это очень очень медленно, так как словарь становится больше.Я попытался переключиться на NSMutableDictionary
, не повезло.
Моя addTerm
функция вызывается каждый раз, когда мне нужно вставить элемент:
func addTerm(_ term: String, withId id: Int, atPosition position: Int) {
if self.map[term] == nil {
self.map[term] = [Posting]()
}
if self.map[term]!.last?.documentId == id {
self.map[term]!.last?.addPosition(position)
}
else {
self.map[term]!.append(Posting(withId: id, atPosition: position, forTerm: term))
}
}
РЕДАКТИРОВАТЬ :Я понял, что это не словарь, который вызывает все это отставание, а его массивы.Массивы перераспределяют слишком много при добавлении новых элементов, и лучшее, что я мог, было заменить их на ContiguousArray
.