【问题标题】:Are generics specialized during compilation or they are just like java generics only for compile time checks?泛型是在编译期间专门化的,还是就像 java 泛型一样仅用于编译时检查?
【发布时间】:2014-06-03 18:36:55
【问题描述】:

实现泛型的三种方式:

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

  2. 每个模板实例都被编译成专门的代码(C++、C#)

  3. #1 和#2 的组合

哪个是 Swift 实现的?

【问题讨论】:

  • 新技术,首发,百万投票
  • 对于 Java 泛型,您所指的术语是“类型擦除”。
  • @gaussblurinc 没错!从好的方面来说,它有助于快速建立知识库!
  • @Alfa07 而且它也大大提高了你的分数! :D
  • 这与 Xcode 完全没有关系。

标签: swift generics


【解决方案1】:

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

【讨论】:

  • 请在你的答案中添加示例:)
  • 嗯,我不知道我该怎么做。不管怎样,代码都是一样的,只有生成的二进制文件会改变。
猜你喜欢
  • 1970-01-01
  • 2012-09-24
  • 1970-01-01
  • 2015-07-31
  • 1970-01-01
  • 2013-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多