performance - 为什么 Scala 标准库中 @specialized 的东西这么少?

标签 performance scala collections autoboxing specialized-annotation

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

没有一个集合类是@specialized。为什么不?这会生成太多类吗?

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

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

最佳答案

特化对类(class)规模的成本很高,因此必须慎重考虑。在收藏的特殊情况下,我想影响将会是巨大的。

尽管如此,这是一项持续的努力——Scala 库才刚刚开始特化。

关于performance - 为什么 Scala 标准库中 @specialized 的东西这么少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5477675/

相关文章:

c++ - 原子递减比递增更昂贵吗?

MySQL查询减去两组值

java - 快速截屏Java

scala - 将订户建模为 Akka Actor 的正确方法

scala - 如何在 Scala 中访问类的类型参数

java - 具有恒定大小操作的线程安全 NavigableSet?

java - 同步方法与 block 的性能

scala - null.==(obj) 不会在 Scala 中抛出空指针异常

iphone - Objective-C - 数组子集的快速枚举?

C# 类型安全且开发人员友好的列表/集合技术