0

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

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

我们可以使它符合Encodable,DecodableCodable协议。我知道我们在Encodable和之间的选择Decodable取决于用例(例如,如果我们正在访问 API 并且不需要解码包含相同类型的响应),但我们也可以使其符合Codable如果结构是都用于编码和解码。

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

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

4

1 回答 1

4

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

但是对于日常工作,很难想象添加不必要的Encodable一致性会导致表格视图滞后的情况,如果这就是您的意思的话。您的“另一个程序员可能会误解”的考虑更为重要。

于 2019-07-22T18:54:38.400 回答