Увеличить скорость обновления существующих записей (~11 000 )в основных данных

Я разбираю массу данных, которые сначала вставляю в основное хранилище данных.

Позже я разбираю тот же 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];
}

7
задан runmad 1 May 2012 в 17:57
поделиться