У меня большой массив JSON, который мне нужно сохранить в Realm, проблема в том, что эта операция длится около 45 секунд, а это слишком долго. Я попытался запустить операцию сохранения для каждого элемента в массиве JSON следующим образом:
for element in jsonArray { // jsonArray has about 25 elements
DispatchQueue.global(qos: .userInitiated).async {
let realm = try! Realm()
let savedObject = realm.objects(MyObject.self).filter("name == '\(element.name)'")
for subElement in element { // element is an array that has around 1000 elements
let myModel = MyModel(initWith: subElement) // MyModel initialization is a simple light weight process that copies values from one model to another
savedObject.models.append(myModel)
}
}
}
Когда я пытаюсь запустить тот же код, но с DispatchQueue.main.async
, он заканчивается примерно в 2 раза быстрее, хотя и не одновременно. Я также попытался запустить приведенный выше код с качеством обслуживания .userInteractive
, но с той же скоростью.
Когда я запускаю этот код, загрузка процессора составляет около 30%, а памяти - около 45 МБ. Можно ли ускорить эту операцию или я зашел в тупик?