Dan*_*kwa 7 arrays performance for-loop scala map
请有人向我解释一下,为什么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
}
Run Code Online (Sandbox Code Playgroud)
Array类中的方法映射(f:A => B)由TraversableLike特性提供,它使用Scala'for循环'迭代输入Array对象的元素,这当然比使用'while循环慢得多".
Scala版本:2.9.2 Java:jdk1.6.0_23 64位窗口
Rex*_*err 14
map
是一个通用的操作(而不是专门的(还)).因此,您必须在进出函数的路上打开/取消装箱操作.不出所料,它要慢得多.这不是使用的循环风格,而是罪魁祸首.
这样做的原因是为了保持代码的一致性和易维护性.由于无数人无限精心处理代码,每种方法都是手工制作的,以获得最佳速度,同时仍然是通用的.通用实用程序一直受到速度的青睐,因为你可以通过手动编写while循环来获得速度,但是如果它不是通用的而你需要它,那么你就会被卡住.
通过对原始集合进行操作来提高Scala的性能是一个目标,但可能不是使用Scala的团队的最高目标.现在,如果您需要速度,请使用while循环.
归档时间: |
|
查看次数: |
751 次 |
最近记录: |