2014-04-01 38 views
2

我有這個簡單的查詢來運行,我想對其進行並行化:爲什麼ParSeq中沒有sortBy方法,儘管Seq中有一個方法?

val res : Array[Int] = valuesRand 
.groupBy(v => v) 
.toSeq 
.sortBy(_._1) 
.map(_._2.size) 
.toArray 

是我的查詢的高性能相當於以下?

val res : Array[Int] = valuesRand 
.par 
.groupBy(v => v) 
.par 
.toIndexedSeq 
.sortBy(_._1) 
.map(_._2.size) 
.toArray 

我問的是,因爲我無法找到sortBy方法爲ParSeq,雖然它在Seq存在。

+2

我猜測Scala dev團隊沒有實現並行排序算法? –

回答

1

ParSeq類不直接延伸SeqLike它提供了sortBy。您可以從ParSeqLike定義看到這一點:

trait ParSeqLike[+T, +Repr <: ParSeq[T], +Sequential <: scala.Seq[T] with SeqLike[T, Sequential]] extends GenSeqLike[T, Repr] with ParIterableLike[T, Repr, Sequential] 

這ParSeq通過

ParSeqLike[T, ParSeq[T], scala.Seq[T]] 

因此延伸,只有在底層實現Splitter是能夠做一個sortBy這不利於你一個位。

相關問題