2

の使い方の例を見つけましたwithPoolParallelのようなGroovyのメソッドに単語を追加する必要があるだけで、コードを並列に実行する必要があると書かcollect, find, eachれています。withPool

import static groovyx.gpars.GParsPool.withPool

list = 1..1000000

withPool{
    squares = list.collectParallel { it * it}
}
println squares

それが本当に平行かどうかを確認する機会はありますか?
同じコードでベンチマーク テストを試みましたが、逐次的な方法
と並列的な方法でははるかに遅くなりました。

4

1 に答える 1

6

「しかし、順次および並列の方法ははるかに遅かった」という意味がわからない...

これは並行して実行されますが、この単純化された例では、ジョブを他のプロセッサに送信し、結果の順序付けを処理するための余分なコストは、いくつかの数値を掛けるだけよりも時間がかかる可能性があります。

それが機能していることを示す単純な例については、次のことができます。

import static groovyx.gpars.GParsPool.withPool

list = [ 2, 2, 2, 2, 2 ]

withPool{
    result = list.collectParallel {
        Thread.sleep( it * 1000 )
        it
    }
}
println result

したがって、結果は になるはずですが、シリアルバージョンで期待される 10 秒未満で終了[2,2,2,2,2]するはずですcollectParallelcollect

明らかに、これは複数のコアを持っていることに依存します;-)

于 2013-01-20T21:04:36.753 に答える