【发布时间】:2016-09-22 14:13:14
【问题描述】:
以下两个代码块在性能方面是否等效?
val input: TypedPipe[Person] = ....
input
.map(_.getName)
.map(_.split(" "))
还有……
val input: TypedPipe[Person] = ....
input
.map(_.getName.split(" "))
具体来说,Scalding 是否会始终优化代码并为上面的两个 sn-ps 执行一个仅映射作业?如果地图函数比 getName/split 复杂得多怎么办?
IMO(以及更复杂的地图功能)第一个示例更具可读性。但是,我担心它可能会导致运行时执行效率降低。
【问题讨论】:
-
顺便说一句,我的猜测是,如果有多个 map() 函数一个接一个(并且它们之间没有任何其他函数),那么它们将被编译器折叠成一个/optimizer 和一个仅地图作业将被执行。我只需要证明!
标签: java scala mapreduce cascading scalding