我有一个应用程序,它会随着时间的推移在图表上创建点。虽然我正在收集 x 轴上每个点的数据,但我还必须执行递归查找,这实际上意味着我在另一个循环中有一个循环。这不是很好地缩放。我没有看到很多在迭代中使用“分而治之”解决方案的例子。我正在考虑使用 Java 的 Executor 并发框架在它自己的线程中运行每个循环,等待答案,收集结果并返回它们。我得到的初步测试结果似乎并没有那么快。我知道我应该展示一些代码,但我首先想知道的是,与我可能不熟悉的更好的方法相比,这种方法是否具有优点。提前致谢!
添加一些 groovyish/javaish 伪代码来帮助思考这个问题:
class Car {
id
model
make
weight
}
for (number in listOfImportantCarIDs) {
Car car = carsMap.get(number) // find the car we care about
String maker = car.make //get it's 'parent'
// get amount of all related cars
Iterator<Car> allcars = carsMap.values().iterator();
while (allcars.hasNext()) {
Car aCar = alldocs.next();
if (maker.equals(aCar.make)) {
totalCarCount++; // increment total related cars
BigDecimal totalWeightofAllCars = totalWeightofAllCars.add(aCar.getWeight()); // add weight to total
// a ghetto cache to prevent double counting
countedMaufacturers.add(make);
}
}
}