@unspecialized注释用于什么?

时间:2013-06-25 19:12:29

标签: scala scala-2.10

阅读Function2 I've noticed that @unspecialized的源代码是added recently (in scala 2.10)。它背后的原因是什么?它如何影响编译?为什么我们需要Function *的tupledcompose和其他一些方法呢?

1 个答案:

答案 0 :(得分:2)

我想说一个安全的猜测是它禁用了目标方法的特化。禁用特化的一个很好的理由是避免字节码膨胀。不加区分地专门化每个方法是一个坏主意,因为每个特化基本上是同一方法的不同副本,并且字节码大小增长得相当快。所以我想在这里,专业Function2被认为通常值得增加字节码大小,但tupledcompose除外,它们不足以保证额外增加。这是代码大小和执行速度之间的微妙平衡,这个想法是为了获得最大的收入。

除此之外:作为一个有趣的例子,说明由于特殊化引起的代码膨胀是多么有问题,请参阅 scala炸弹的这个配方:

Scala bomb? (like a zip bomb)