小编Ome*_*ega的帖子

快速并发操作慢2倍

我有一个需要保存到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。是否有可能加快此操作的速度,否则我会走到尽头?

performance realm ios swift

6
推荐指数
1
解决办法
118
查看次数

标签 统计

ios ×1

performance ×1

realm ×1

swift ×1