gpt4 book ai didi

performance - Scala 集合转换性能 : single looping vs. 多次循环

转载 作者:行者123 更新时间:2023-12-02 04:48:26 24 4
gpt4 key购买 nike

当有一个集合并且您必须对其所有元素执行两个或多个操作时,哪个更快?:

val f1: String => String  = _.reverse
val f2: String => String = _.toUpperCase
val elements: Seq[String] = List("a", "b", "c")
  1. 多次迭代并在一个循环中执行一个操作

    val result = elements.map(f1).map(f2)

    这种方法确实有优势,应用第一个函数后的结果可以重复使用。

  2. 迭代一次并对每个元素一起执行所有操作

    val result = elements.map(element => f2(f1(element)))

    val result = elements.map(element => f1.compose(f2)

这两种方法在性能上有什么区别吗?如果是,哪个更快?

最佳答案

事情是这样的,集合的转换或多或少是运行时 O(N) , * 应用的所有函数的运行时成本。因此,我怀疑您在上面提出的第二组选择是否会对运行时间产生丝毫影响。您列出的第一个选项是另一回事。可以避免创建新集合,因为这可能会导致开销。这就是“ View ”集合的用武之地(参见我发现的这个好例子)

In Scala, what does "view" do?

如果您应用了多个映射操作,您可能会这样做:

val result = elements.view.map(f1).map(f2).force

(最后强制,导致所有功能评估)上面的第二组示例可能会稍微快一点,但是如果您在映射中使用了很多这样的或复杂的匿名函数,则“查看”选项可以使您的代码更具可读性。

关于performance - Scala 集合转换性能 : single looping vs. 多次循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19338920/

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