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

时间:2018-01-04 02:44:39

标签: ios iphone swift design-patterns coding-style

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

因此,想象一下以下场景:

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树与Object类的属性数量一样巨大,因此Object类获取数据json树中包含的所有数据。一个对象有大约10个属性,其中三个是数组(价格就是其中之一)。

2 个答案:

答案 0 :(得分:0)

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

对性能的更大杠杆将来自于没有获取尽可能多的数据,并且一旦拥有它就会对分配保持懒惰(例如,只保留querySnapshots并且仅在获取docs或doc.data()时用户界面要求)。

答案 1 :(得分:0)

取决于JSON数据内容,如果您的JSON数据真的是quite big and contains a lot of Arrays and Dictionaries,那么最好使用Object class,就像在需要显示数据的同一个控制器上过滤JSON一样{ {1}}即take memory而Object类会将负载除以JSON并在一行中为您提供特定结果

所以它取决于Load on single controller

<强> - &GT;您可以将Object类用于Big Structured JSON,以免使单个控制器超载以进行所有处理

<强> - &GT;可以使用将从JSON携带数据的小结构,因此,您不需要在JSON中反复迭代相同的数据

注意:我更喜欢您的案例的对象类,因为您说数据非常大