一尘不染

泛型是在编译过程中专用还是像Java泛型那样仅用于编译时检查?

swift

有三种方法可以实现泛型:

  1. 只是用于编译时间检查的工具,但是每个模板实例都被编译为相同的字节/汇编代码实现(如注释“类型擦除”实现中所述的Java)

  2. 每个模板实例均被编译为专用代码(C ++,C#)

  3. #1和#2的组合

在Swift中实现哪一个?


阅读 296

收藏
2020-07-07

共1个答案

一尘不染

Swift首先会编译一个执行动态类型检查的实现,但是当速度与代码大小之间的权衡是有意义的时候,优化器可以选择为特定类型克隆专门的实现。理想情况下,这将使总克隆的速度提高90%,而不会增加代码大小和编译时间。

2020-07-07