gpt4 book ai didi

clojure - 为什么我会选择不使用clojure 1.5 Reducer功能?

转载 作者:行者123 更新时间:2023-12-03 14:14:06 24 4
gpt4 key购买 nike

我正在阅读有关1.5中引入的Clojure减少剂的信息,这里:https://github.com/clojure/clojure/blob/master/changes.md。我的理解是,它们是对现有map / filter / reduce函数的性能增强。因此,如果是这样,我想知道为什么它们位于新的命名空间中,而不是简单地替换现有的map / reduce / filter实现。换句话说,为什么我永远不会选择使用新的reducers功能?

编辑:

针对最初的两个答案,这里有一个澄清:

我将在此处引用发行说明:



Reducer提供了一组用于处理集合的高性能功能。实际的折叠/减少算法是通过减少集合来指定的。这允许每个集合定义减少其内容的最有效方法。



在我看来,这听起来并不像新的map / filter / reduce函数本质上是并行的。例如,在发行说明的下方,它指出:



它包含一个新函数fold,它是一个并行的reduce + combine



因此,除非发行说明写得不好,否则在我看来,有一个新功能fold是并行的,而其他功能是特定于集合的实现,旨在为特定集合提供最高性能。我只是在这里误读了发行说明吗?

最佳答案

前言:您有问题,并且您将使用并行性,现在有两个问题。

从某种意义上说,它们是替代品,它们可以并行工作(相对于普通的旧顺序图等)。并非所有操作都可以并行化(在许多情况下,操作必须至少为associative,还要考虑延迟序列和迭代器)。此外,并非每个操作都可以有效地并行化(总会有一些协调开销,有时开销大于并行化增益)。

关于clojure - 为什么我会选择不使用clojure 1.5 Reducer功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16065910/

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