【问题标题】:Why view method is deprecated from ParSeqLike at Scala?为什么在 Scala 中不推荐使用 ParSeqLike 的视图方法?
【发布时间】:2017-05-28 20:32:36
【问题描述】:

我尝试将惰性集合和并行集合的优点结合起来,如下所示: Vector( /* some values....*/ ).par.view - 它提供了巨大的性能提升。但 Scala 2.12 将该方法标记为 ParSeqLike 已弃用。懒惰地使用 Parallel Collection 有什么问题?哪里有替代品?

【问题讨论】:

  • 看起来在 2.10 中是可行的。虽然在 2.11 中这个能力被移除了。 github.com/scala/scala/commit/… 看来这是朝着简化收集迈出的一步。
  • 顺便说一句,Vector(...).par.view 现在在功能上与 Vector(...).view 相同。所以避免使用它。我想不出任何简单的方法来解决这个问题。看来你现在必须选择视图或标准。您可以手动 group() 您的集合并在每个块上使用 par 以节省中间对象的内存,但它有点 hacky。
  • @BruceLowe,工作表对此案例显示不同的签名。

标签: scala parallel-processing lazy-evaluation lazy-sequences


【解决方案1】:

懒惰地使用 Parallel Collection 有什么问题?

如果您查看定义,它并不平行:它被定义为def view = seq.view(因此Vector( /* some values....*/ ).par.view 应该与Vector( /* some values....*/ ).view 相同)。这就是文档告诉你的:直接使用seq.view,所以很明显它不是并行的。 ParSeqLike 的某些后代可能会覆盖它,但 ParVector 不会。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-08
    • 2021-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    • 2014-05-01
    相关资源
    最近更新 更多