我已经搜索过使用@specialized
在Scala 2.8.1标准库的源代码中。看起来只有少数特征和类使用此注释:Function0
, Function1
, Function2
, Tuple1
, Tuple2
, Product1
, Product2
, AbstractFunction0
, AbstractFunction1
, AbstractFunction2
.
没有一个集合类是@specialized
。为什么不?这会产生太多的类吗?
这意味着使用具有原始类型的集合类是非常低效的,因为会发生很多不必要的装箱和拆箱。
拥有不可变列表或序列的最有效方法是什么(使用IndexedSeq
特点Int
s,避免装箱和拆箱?
专业化对班级规模的成本很高,因此必须慎重考虑。就收藏的具体情况而言,我想影响将会是巨大的。
尽管如此,这仍然是一项持续的努力——Scala 库才刚刚开始专业化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)