gpt4 book ai didi

arrays - Array.map(f : A => B) in Scala) 性能不佳

转载 作者:行者123 更新时间:2023-12-04 10:19:40 30 4
gpt4 key购买 nike

请有人向我解释,为什么 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 循环慢得多'。

斯卡拉版本:2.9.2
Java:jdk1.6.0_23 64 位窗口

最佳答案

map是一个通用操作(而不是专门的(还))。因此,您必须在进出函数的过程中对操作进行装箱/拆箱。不出所料,它要慢得多。这是罪魁祸首,而不是使用的循环样式。

这样做的原因是为了代码的一致性和易于维护。有无数人无限小心地处理代码,每个方法都将手工制作以获得最佳速度,同时仍然是通用的。通用实用程序比速度更受青睐,因为您总是可以通过手动编写 while 循环来恢复速度,但是如果它不是通用的并且您需要它,那么您就会陷入困境。

通过对原始集合的操作提高 Scala 的性能是一个目标,但可能不是 Scala 团队的最高目标。现在,如果您需要速度,请使用 while 循环。

关于arrays - Array.map(f : A => B) in Scala) 性能不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12999680/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com