抱歉,如果这是重复的 - 我做了一些搜索,并没有找到我需要的东西。
我们的应用程序有一个性能关键部分,它将传入数据的 Play 2.0 Enumerator
(可以被认为是 a )转换为 a (或类似的)。我们将使用该方法,问题是什么是最高效的方法。(我将在代码中使用而不是,但想法应该是相同的。)Stream
List
fold
Enumerator
Stream
Enumerator
val incoming: Stream[Int] = ???
val result: Seq[Int] = incoming.fold(Seq.empty)(_ + _)
val result2: Seq[Int] = incoming.fold(MutableList.empty(_ += _).toSeq
所以问题本质上是,重复附加到不可变代码Vector
与重复附加到可变代码MutableList
或ListBuffer
性能关键代码相比如何?List
我们只是因为我们需要O(1)
追加(而不是前置)而被抛出。但是可变数据结构在性能或垃圾收集方面能给我们带来什么好处吗?