Scala のプログラミングを始めたとき、1 つの大きな疑問がありました。map
scalaのメソッドがどのように機能するか知りたいです。順次処理かマルチスレッド処理か? map
さらに重要なことに、メソッドが or よりも速い理由を知りたいですwhile
かforeach
?
val list = List(1,2,3,45,12)
list.map(x => x)
list.foreach(x => println(x))
Scala のプログラミングを始めたとき、1 つの大きな疑問がありました。map
scalaのメソッドがどのように機能するか知りたいです。順次処理かマルチスレッド処理か? map
さらに重要なことに、メソッドが or よりも速い理由を知りたいですwhile
かforeach
?
val list = List(1,2,3,45,12)
list.map(x => x)
list.foreach(x => println(x))
まず、2 つの操作は無限に異なります。map
function が与えられたリストの変換ですが、A => B
通常は副作用のために使用されますforeach
。Unit
関数の結果として新しいコレクション(この場合)を作成する場合foreach
と比較して、実行に必要なサイクルの点で「高速」であると思います。map
しかし、これら2つを比較することは、実際にはリンゴとオレンジを比較しています.
map
呼び出されるコレクションが並列コレクションである場合にのみ、並列になります。あなたの例では:
list.map(x => x)
並列ではなく順次ですが、
list.par.map(x => x)
平行だろう。この使用法には、考慮に入れる必要があるさまざまな注意事項があることは明らかです。同じ並列コレクションにもforeach
メソッドがあります。