我有一段java代码,它从xml构造一个对象,并且根据对象大小需要一些纳秒到毫秒。有时我必须循环调用该方法 1-2 次,有时 70-80 次才能构造对象列表。
我尝试并行构建对象,但有时它花费的时间是顺序的两倍,而其他时间则为一半。现在我的问题是,是否有任何指南或性能比较指标来指导何时应该使用多任务处理以及何时使用多任务处理?
我正在使用的示例代码是:
List<Callable<Integer>> tasks = new ArrayList<Callable<Integer>>();
for (final Integer object : list) {
Callable<Integer> c = new Callable<Integer>() {
@Override
public Integer call() throws Exception {
return test.m1(object);
}
};
tasks.add(c);
}
List<Future<Integer>> results = EXEC.invokeAll(tasks);
for (Future<Integer> fr : results) {
fr.get();
}
最佳答案
看看 Doug Lea 的帖子 "When to use parallel streams" .
当并行计算开始有意义时,粗略估计(十倍以内)顺序执行的时间为100 微秒。尽管还有更多因素需要考虑。
关于java - 什么时候并行执行任务是一种矫枉过正的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29618653/