我在Scala 2.8.1标准库的源代码中搜索了@specialized的使用。看起来只有少数特征和类使用此注释:Function0Function1Function2Tuple1Tuple2Product1Product2AbstractFunction0AbstractFunction1AbstractFunction2

集合类都不是@specialized。为什么不?这会产生太多的类吗?

这意味着使用具有原始类型的集合类的效率非常低,因为会发生很多不必要的装箱和拆箱操作。

避免产生装箱和拆箱的不可变的IndexedSeq列表或序列(具有Int特性)的最有效方法是什么?

最佳答案

特化在类的大小上付出了高昂的代价,因此必须仔细考虑添加它。我认为在收藏的特殊情况下,影响将是巨大的。

尽管如此,这仍是持续的工作-Scala库才刚刚开始专门化。

10-06 13:07