Vector
几乎总是会跑赢List
。除非你的算法只使用::
,head
和tail
,Vector
会比List
. 使用List
更多是关于您的算法的概念性问题(数据是堆栈结构的,仅访问头/尾,仅通过前置添加元素,使用模式匹配(可以与 一起使用Vector
,我觉得使用它更自然List
))。
你可能想看看为什么我应该在 scala 中使用向量
现在比较一些不错的数字(显然不是“真正的”基准,但是嗯):
val l = List.range(1,1000000)
val a = Vector.range(1,1000000)
import System.{currentTimeMillis=> milli}
val startList = milli
l.map(_*2).map(_+2).filter(_%2 == 0)
println(s"time for list map/filter operations : ${milli - startList}")
val startVector = milli
a.map(_*2).map(_+2).filter(_%2 == 0)
println(s"time for vector map/filter operations : ${milli - startVector}")
输出 :
time for list map/filter operations : 1214
time for vector map/filter operations : 364
编辑:刚刚意识到这实际上并不能回答你的问题。据我所知,您必须自己调用 toList/toVector。至于表演,这取决于你的顺序,但除非你一直来回走动,否则这应该不是问题。
再一次,不是一个严肃的基准,而是:
val startConvToList = milli
a.toList
println(s"time for conversion to List: ${milli - startConvToList}")
val startConvToVector = milli
l.toVector
println(s"time for conversion to Vector: ${milli - startConvToVector}")
输出 :
time for conversion to List: 48
time for conversion to Vector: 18