围绕Groovy语言这是一个简单的效率问题;我有一个Customer
对象,其中有一个id
,我想将这些ID转移到另一个列表中,在我看来这个列表是原子的,所以可以并行。
e.g。线性执行
public List<Long> extractIds(List<Customer> customerList) {
List<Long> customerIds = new ArrayList<Long>();
customerList.each { it -> customerIds.add(it.id) }
}
问题:在持有大量客户时,上述示例中传输ID的最有效方法是什么?
答案 0 :(得分:2)
最简单的方法是:
public List<Long> extractIds(List<Customer> customerList) {
customerList.id
}
或者,如果您想以多线程方式进行,可以使用gpars:
import static groovyx.gpars.GParsPool.withPool
public List<Long> extractIds(List<Customer> customerList) {
withPool {
customerList.collectParallel { it.id }
}
}
但是你可能会发现第一个暴力方法对于这个简单的例子更快(而不是启动一个线程池,并同步来自不同线程的结果集合)