Swift 泛型是否单独编译?

Gep*_*epp 5 generics swift

我试图弄清楚Swift泛型是如何工作的。具体来说,我没有设法找到关于编译模型的精确陈述。在 C++ 中,泛型(模板)不是单独编译的,因为它们是为每个调用站点实例化的(至少在原则上是这样)。相反,Java 泛型是单独编译的。Swift 的情况如何,关于泛型的单独编译?

Nat*_*ook 5

它是两者的结合,取决于优化器决定将获得更好的性能。他们在WWDC Session 404: Advanced Swift接近尾声时谈到了它。幻灯片说:

Swift 可以直接运行通用代码

优化器可以随意生成专用版本的通用代码

  • 单独编译泛型
  • 更快的编译
  • 以代码大小换取速度的灵活性