是否斯卡拉提供一种方式来执行并行映射操作为标准语言的一部分?并行地图操作?
例如,给定:
scala> val a = List((1,2), (3,4), (3,6))
a: List[(Int, Int)] = List((1,2), (3,4), (3,6))
我可以这样做:
scala> a.map(tup => tup._1 + tup._2)
res0: List[Int] = List(3, 7, 9)
但是,据我所知,这在映射列表中提供的功能顺序对象。是否有一种内置的方法可以将该函数应用于单独线程(或同等方法)中的每个元素,然后将结果收集到结果列表中?
不要使用'List'分布式('par')操作。你应该使用'IndexedSeq'。 – senia
@senia - 你能不能简单地阐述为什么在这种情况下使用列表是一个坏主意?我不需要以任何方式订购产生的清单。 – csvan
这是因为'par'方法创建'parallel collection'的方式。对于'Vector'(默认'IndexedSeq'实现),'Range'和'Array',它只是用轻量级包装器包装初始集合。但对于List来说,它应该创建一个全新的集合,这可能会导致性能问题。参见[创建并行采集(http://docs.scala-lang.org/overviews/parallel-collections/overview.html#creating_a_parallel_collection)。 – senia