为什么Tuple0-22和Function0-22而不是HList

时间:2013-01-24 11:54:41

标签: scala scala-collections

是否有一个原因(性能,内存,类型系统)为什么元组不是HList而函数不是从HList到某个值的映射?

2 个答案:

答案 0 :(得分:7)

性能和记忆都。元组有O(1)个元素访问权限;如通常构造的那样,HList是一个列表,因此具有O(n)。此外,元组需要一个额外对象的内存,n引用其他对象,而HList(作为列表)每个需要一个对象(加上next指针)。由于对象的开销大约是两个引用,因此将n+2内存使用量转换为4n+2。核心语言结构并不那么棒。

答案 1 :(得分:2)

扩展AnyVal的HArray可能具有与TupleX类相当的性能和内存要求。唯一的开销是数组的长度和数组索引边界检查。