我有一个需要保存到Realm的大型JSON数组,问题是此操作持续约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)
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试运行相同的代码时DispatchQueue.main.async,即使不是并发运行,它的完成速度也要快2倍左右。我也尝试过以服务质量运行上面的代码,.userInteractive但是速度相同。
当我运行此代码时,CPU利用率约为30%,内存约为45 MB。是否有可能加快此操作的速度,否则我会走到尽头?