Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm Scala中map和for的性能比较_Algorithm_Scala_Jvm - Fatal编程技术网

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)