2

我找到了一个关于如何使用的例子withPool。它说我只需要将单词添加Parallel到 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

所以结果应该是[2,2,2,2,2],但collectParallel应该在不到 10 秒的时间内完成,您期望使用串行collect版本

显然,这取决于您拥有多个核心;-)

于 2013-01-20T21:04:36.753 回答