制作结构 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
}

我们可以让它符合 EncodableDecodableCodable 协议。我知道我们在 EncodableDecodable 之间的选择取决于用例,(例如,如果我们正在点击 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" 考虑更为重要。