我有一段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();
}
答案 0 :(得分:1)
简短回答:如果您没有遇到性能或IO阻止问题,那就太过分了。
关于并行性能的几个因素是:
答案 1 :(得分:1)
看看Doug Lea的帖子"When to use parallel streams"。
当并行计算开始有意义时,粗略估计(在十分之一内)是顺序执行的 100微秒。虽然还有很多因素需要考虑。