時間の経過とともにグラフ上にポイントを作成する反復を行うアプリがあります。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);
}
}
}