クラスTestClassStringは、文字列のjava.util.Listを返します。
オブジェクトTestViewPerformanceは、メソッドTestViewController.iterateListの呼び出しにかかった時間を記録します。
iterateList内では、並列処理を削除すると、この小さなプログラムの実行にかかる時間は一貫して少なくとも100ミリ秒速くなります。
mySeq.parからmySeq
ここで指定されているように、scalaのパフォーマンスを測定するために使用されるベンチマークツールがあることを認識しています:http: //docs.scala-lang.org/overviews/parallel-collections/performance.html
しかし、それでも、現在のミリ秒時間に基づく並列処理を使用して、このプログラムがより高速に実行されることを期待しますか?.parループ内のすべてのコードは複数のコアに分散していますか?
コード全体は次のとおりです。
package testpackage
import java.util.Calendar
object TestViewPerformance {
def main(args:Array[String]) = {
val before = Calendar.getInstance().getTimeInMillis()
val testViewController = new TestViewController();
val testClassString : TestClassString = new TestClassString()
val folderList = testClassString.getStringList()
var buffer = new scala.collection.mutable.ListBuffer[String]
val seq = scala.collection.JavaConversions.asScalaBuffer(folderList);
/*
* this method (iterateList) is where the parallelism occurs
*/
testViewController.iterateList(seq)
val after = Calendar.getInstance().getTimeInMillis()
println(before)
println(after)
println(after-before)
}
class TestViewController {
def iterateList(mySeq : Seq[String]) = {
for (seqVal<- mySeq) {
if(seqVal.equalsIgnoreCase("test")){
}
}
}
}
}
package testpackage;
import java.util.ArrayList;
import java.util.List;
public class TestClassString {
public List<String> getStringList(){
List<String> l = new ArrayList<String>();
for(int i = 0; i < 1000000; ++i){
String test = ""+Math.random();
l.add(test);
}
return l;
}
}