我想知道在从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个属性,其中三个是数组(价格就是其中之一)。
答案 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中反复迭代相同的数据
注意:我更喜欢您的案例的对象类,因为您说数据非常大