Algorithm Scala中map和for的性能比较
我想知道当他们两个都在做同样的事情时,在第二个语句中使用第一个语句的可能用例是什么Algorithm Scala中map和for的性能比较,algorithm,scala,jvm,Algorithm,Scala,Jvm,我想知道当他们两个都在做同样的事情时,在第二个语句中使用第一个语句的可能用例是什么 val xs = List[Int](1,2,3,4,5,6) 有关数字列表: for (x <- xs if x%2 == 0) yield x*10 我认为没有性能差异。发动机罩下使用for循环的代码将转换为带有过滤器的代码和映射的代码(详细信息可能因Scala版本而异)。这取决于你的喜好,你想使用哪个版本。有关更多详细信息,请参见此。我认为没有性能差异。发
val xs = List[Int](1,2,3,4,5,6)
有关数字列表:
for (x <- xs if x%2 == 0)
yield x*10
我认为没有性能差异。发动机罩下使用
for
循环的代码将转换为带有过滤器的代码
和映射的代码
(详细信息可能因Scala版本而异)。这取决于你的喜好,你想使用哪个版本。有关更多详细信息,请参见此。我认为没有性能差异。发动机罩下使用for
循环的代码将转换为带有过滤器的代码
和映射的代码
(详细信息可能因Scala版本而异)。这取决于你的喜好,你想使用哪个版本。有关详细信息,请参阅此部分。谢谢:)如果在spark RDD上执行此操作,您认为会发生什么情况?(我的意思是,如果xs是RDD?)将for循环转换成带有map/for的代码是由编译器执行的。这意味着无论使用哪种类型的收集,它都应该以相同的方式工作。有意义:)谢谢。理解AFAIK将使用with filter
而不是filter
,这样可以避免中间收集。请参阅:谢谢:)如果在spark RDD上执行此操作,您认为会发生什么?(我的意思是,如果xs是RDD?)将for循环转换成带有map/for的代码是由编译器执行的。这意味着无论使用哪种类型的收集,它都应该以相同的方式工作。有意义:)谢谢。理解AFAIK将使用with filter
而不是filter
,这样可以避免中间收集。看见
xs.filter(_%2 == 0).map(_*10)