【发布时间】:2012-10-11 13:39:36
【问题描述】:
请有人向我解释一下,为什么 Array.map(f: A=> B) 方法的实现方式比这段代码慢 5 倍以上:
val list = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
val newList = new Array[Int](size)
var j = 0
while (j < size) {
newList(j) = list(j)
j += 1
}
由 TraversableLike trait 提供的 Array 类中的方法 map(f: A=> B) 使用 Scala 'for loop' 来迭代输入 Array 对象的元素,这当然比使用慢得多'while 循环'。
Scala 版本:2.9.2 Java:jdk1.6.0_23 64位窗口
【问题讨论】:
-
所以你的意思是上面的代码比
val newList = list.map(x => x)快? -
我想看看你是如何测量的。您是否使用过像 caliper 这样的微型基准测试框架?
-
map over Array 将构建 ArraySeq,然后将结果复制到新数组中
标签: arrays performance scala map for-loop