我正在尝试在数值处理库中实现张量(多维数组)。 Tensor 实现的签名如下所示(删除签名中不相关的部分):
final class Tensor[V](val data: Array[V], val shape: IndexedSeq[Int])
这里关注的问题之一是 IndexedSeq[Int]
的性能(因为它们得到 scala.collection.Vector
的支持)。作为一个数值处理库,性能是一个大问题。我想换掉默认的 Vector
-支持IndexedSeq
与 Array
-支持的一个。
我想知道执行此操作的最佳方法是什么(而不只是从 Scala 集合中复制 IndexedSeq
的完整代码并更改相关部分。)谢谢。
最佳答案
这样就够了吗?
final class FastVector[+T](a: Array[T]) extends IndexedSeq[T] {
override def apply(idx: Int) = a(idx)
override def length = a.length
}
然后,您将使用 FastVector
作为您的 IndexedSeq
类型。 IndexedSeq
的所有功能均由该特征的具体方法提供,因此 map
、filter
等都可供您使用也是如此。
关于scala - 如何在 Scala 中实现由数组支持的不可变 IndexedSeq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49256315/