制作结构 Encodable/Decodable 而不仅仅是 Codable 是否有任何性能优势?
Are there any performance benefits of making a struct Encodable/Decodable instead of just Codable?
举个例子structPerson
就是要序列化的:
struct Person {
let firstName: String
let lastName: String
}
我们可以让它符合 Encodable
、Decodable
或 Codable
协议。我知道我们在 Encodable
和 Decodable
之间的选择取决于用例,(例如,如果我们正在点击 API 并且不需要解码包含相同类型的响应)但如果结构要同时用于编码和解码,我们也可以使其符合 Codable
。
如果我们需要结构严格用于编码或解码,但不是两者,从性能角度是不是一个坏主意只需使用包罗万象的 Codable
而不是指定 Encodable
/Decodable
一致性?
使用 Codable
而不是指定 Encodable
/Decodable
的一个明显缺点是,另一个程序员可能会误解该结构用于编码和解码,而实际上只有一个两者正在发生。但是,如果我对性能非常感兴趣怎么办?
"performance." 没有一维,这取决于你的意思。例如,在不需要时添加 Encodable
一致性可能会增加二进制文件的大小,从而减慢启动时间。或者它可能是微不足道的,因为二进制大小与启动时间不是很相关(因为文件是内存映射的)。或者你的意思是 compile-time 性能,显然添加 auto-generated 一致性显然需要一些额外的编译器工作,并且在某些情况下可能会增加 type-checker 需要游过的类型的海洋,减慢速度低一点。
但是对于 day-to-day 工作,很难想象添加不必要的 Encodable
一致性会导致 table 视图滞后的情况,如果这就是您所指的那种性能的话.您的 "another programmer may misconstrue" 考虑更为重要。
举个例子structPerson
就是要序列化的:
struct Person {
let firstName: String
let lastName: String
}
我们可以让它符合 Encodable
、Decodable
或 Codable
协议。我知道我们在 Encodable
和 Decodable
之间的选择取决于用例,(例如,如果我们正在点击 API 并且不需要解码包含相同类型的响应)但如果结构要同时用于编码和解码,我们也可以使其符合 Codable
。
如果我们需要结构严格用于编码或解码,但不是两者,从性能角度是不是一个坏主意只需使用包罗万象的 Codable
而不是指定 Encodable
/Decodable
一致性?
使用 Codable
而不是指定 Encodable
/Decodable
的一个明显缺点是,另一个程序员可能会误解该结构用于编码和解码,而实际上只有一个两者正在发生。但是,如果我对性能非常感兴趣怎么办?
"performance." 没有一维,这取决于你的意思。例如,在不需要时添加 Encodable
一致性可能会增加二进制文件的大小,从而减慢启动时间。或者它可能是微不足道的,因为二进制大小与启动时间不是很相关(因为文件是内存映射的)。或者你的意思是 compile-time 性能,显然添加 auto-generated 一致性显然需要一些额外的编译器工作,并且在某些情况下可能会增加 type-checker 需要游过的类型的海洋,减慢速度低一点。
但是对于 day-to-day 工作,很难想象添加不必要的 Encodable
一致性会导致 table 视图滞后的情况,如果这就是您所指的那种性能的话.您的 "another programmer may misconstrue" 考虑更为重要。