使结构可编码/可解码而不仅仅是可编码是否有任何性能优势



对于要序列化的示例结构Person

struct Person {
    let firstName: String
    let lastName: String
}

我们可以使它符合EncodableDecodableCodable协议。我知道我们在EncodableDecodable之间的选择取决于用例(例如,如果我们命中 API 并且不需要解码包含相同类型的响应(,但如果结构既用于编码又用于解码,我们也可以使其符合Codable

如果我们需要结构严格用于编码解码,但不能两者兼而有之,那么从性能的角度来看,仅使用包罗万象的Codable而不是指定Encodable/Decodable一致性是一个坏主意吗?

使用Codable而不是指定Encodable/Decodable的一个明显缺点是另一个程序员可能会将该结构误解为用于编码和解码,而实际上只有两者之一正在发生。但是,如果我对性能非常感兴趣呢?

"性能"没有一个维度。这取决于你的意思。例如,在不需要时添加Encodable一致性可能会增加二进制文件的大小,从而减慢启动时间。或者它可能微不足道,因为二进制大小与启动时间不是很相关(因为文件是内存映射的(。或者,也许你的意思是编译时性能,其中明确添加自动生成的一致性显然需要一些额外的编译器工作,并且在某些情况下可能会增加类型检查器需要游走的类型海洋,从而减慢速度。

但是对于日常工作,很难想象添加不必要的Encodable一致性会导致表视图滞后的情况,如果这是您所说的性能。你的"另一个程序员可能会误解"的考虑要重要得多。

相关内容

最新更新