在编译过程中泛型是否专用,或者它们就像java泛型只用于编译时间检查?

时间:2014-06-03 18:36:55

标签: swift generics

实现泛型有三种方法:

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

  2. 每个模板实例化都编译为专门的代码(C ++,C#)

  3. #1和#2的组合

  4. 在Swift中实现了哪一个?

1 个答案:

答案 0 :(得分:9)

Swift首先编译一个执行动态类型检查的实现,但是当速度与代码大小权衡有意义时,优化器可以选择克隆特定类型的专用实现。理想情况下,这可以获得始终克隆的90%的加速,而不会使代码大小和编译时间爆炸。