Я разбираю массу данных, которые сначала вставляю в основное хранилище данных.
Позже я разбираю тот же XML, хотя часть его может быть обновлена. Затем я проверяю существующую запись с тем же тегом, и если она уже существует, я обновляю запись данными.
Однако, в то время как мой первоначальный анализ (около 11 000 записей )занимает около 8 секунд, обновление кажется дорогим и занимает 144 секунды (это запуск симулятора, поэтому на реальных устройствах это значительно дольше ).
В то время как в первый раз все в порядке (Я показываю индикатор выполнения ), второй неприемлемо длинный, и я хотел бы сделать что-то для повышения скорости (даже если это происходит в фоновом режиме в отдельной теме ).
К сожалению, это не вопрос find -или -create , поскольку данные в XML могли измениться для отдельных записей, поэтому каждая из них может существенно нуждаться в обновлении.
Я проиндексировал атрибуты, что ускорило первоначальный синтаксический анализ и обновление, но все еще медленно (числа выше с индексацией ). Что я заметил, так это то, что синтаксический анализ/обновление постепенно замедляется. Хотя изначально он был быстрым, он становится все медленнее и медленнее по мере того, как обрабатывается все больше и больше записей.
Итак, наконец, мой вопрос: есть ли какие-либо предложения для меня о том, как я могу улучшить скорость, с которой я обновляю свой набор данных? Я использую MagicalRecord для получения записи. Вот код:
Record *record;
if (!isUpdate) {
record = [NSEntityDescription insertNewObjectForEntityForName:@"Record" inManagedObjectContext:backgroundContext];
} else {
NSPredicate *recordPredicate = [NSPredicate predicateWithFormat:@"SELF.tag == %@", [[node attributeForName:@"tag"] stringValue]];
record = [Record findFirstWithPredicate:recordPredicate];
}