gpt4 book ai didi

java - 烫 'multiple map()'优化

转载 作者:行者123 更新时间:2023-12-02 03:20:50 27 4
gpt4 key购买 nike

以下两个代码块在性能方面是否等效?

val input: TypedPipe[Person] = ....
input
.map(_.getName)
.map(_.split(" "))

还有...

val input: TypedPipe[Person] = ....
input
.map(_.getName.split(" "))

具体来说,Scalding 是否会优化代码并始终对上面的两个片段执行单个仅映射作业?如果 map 函数比 getName/split 复杂得多怎么办?

IMO(对于更复杂的 map 函数)第一个示例更具可读性。但是,我担心这可能会导致运行时执行效率降低。

最佳答案

这两个函数不会在字节码/scalac层折叠,但更重要的是,烫伤总是会将它们折叠成hadoop中的单个map任务。事实上,所有类似 map 的运算符(map、flatMap、filter 等)都将被折叠到 1 个映射任务中,甚至折叠到一个reduce 任务的末尾。

因此,您的两个示例在 hadoop 中将具有相同的 DAG,唯一的区别是一些额外的函数调用开销。

与烫作业中进行的序列化/反序列化和 IO 相比,单独调用这些函数的开销不太可能成为性能瓶颈。热点虚拟机也有可能将其中一些 JIT 到 native 指令中。

我绝对建议提高可读性,除非您已经进行了大量分析并发现这是一个瓶颈(我会感到非常惊讶)。

关于java - 烫 'multiple map()'优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39641474/

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