从对象的 属性 或 json 加载数据的速度更快吗?

Does data load faster from an object's property or from json?

我想知道从 json 或从对象初始化 class 之间是否存在任何性能差异。

所以,想象一下以下场景:

func getDataFromServer(){

    ...

    var data = doc.data()
    let obj = Object(id: String, prices: [data["price"] as! Double], .. , .. , .. , .. , ..)

    if (dictionary[id] != nil) {
       // obj already exists. Update its info.

       var oldObj = dictionary[id]
       oldObj.updateInfoWith(price: obj.prices[0], .. , .. , .. , .. , ..) //(1)
       //behind the scenes updateInfoWith does: oldObj.prices.append(obj.prices[0])
    }
    else{
        objects.append(obj)
    }
}

在第 (1) 行,从 obj.prices[0]data["price"] as! Double 获取价格在性能上有什么不同吗?数据 json 树与对象 class 的属性数量一样大,因此对象 class 获取数据 json 树中包含的所有数据。一个对象有大约 10 个属性,其中三个是数组(价格是其中之一)。

这些操作:运行 a getter 与访问字典(就此而言 valueForKey:)在性能方面即使不是几乎相同,也非常具有可比性。

更大的性能杠杆将来自不获取尽可能多的数据,并且一旦拥有它就懒惰分配(例如,只保留 querySnapshots 并且只获取文档或 doc.data()当 UI).

需要该数据时

取决于 JSON 数据内容,如果您的 JSON 数据确实是 quite big and contains a lot of Arrays and Dictionaries,最好使用 Object class,就像您过滤 JSON 在您需要显示数据的同一控制器上将 take memoryLoad on single controller 而对象 class 将在那里分配负载并迭代 JSON 并在一个中给您特定的结果第

所以这取决于 JSON Structure

-> 或者你可以使用 Object class 用于 Big Structured JSON 这样就不会为所有处理过载单个控制器

-> 可以使用携带来自 JSON 的数据的小型结构,因此,您不需要在 JSON 中为相同的数据一次又一次地迭代

注意:我更喜欢对象 class 因为你说数据很大