// parallel processing
int processors = Runtime.getRuntime().availableProcessors();
ExecutorService executorService = Executors.newFixedThreadPool(threads);
final List<String> albumIds2 = new ArrayList<String>();
long start2 = System.nanoTime();
for (final HColumn<String, String> column : result.get().getColumns()) {
Runnable worker = new Runnable() {
@Override
public void run() {
albumIds2.add(column.getName());
}
};
executorService.execute(worker);
}
long timeTaken2 = System.nanoTime() - start2;
私はアルバムidsのList<String>
を作成する上記の例のようなコードを持っています。 カラムはcassandraデータベースのスライスです。 アルバムのリスト全体が作成されるのにかかる時間を記録します。並列処理は逐次処理をいつ克服するのですか?
同じように、以下のような拡張forループを使用しています。
QueryResult<ColumnSlice<String, String>> result = CassandraDAO.getRowColumns(AlbumIds_CF, customerId);
long start = System.nanoTime();
for (HColumn<String, String> column : result.get().getColumns()) {
albumIds.add(column.getName());
}
long timeTaken = System.nanoTime() - start;
私は、アルバムの数がどんなに多くても、各ループはいつも完了に時間がかかります。それは間違っていますか?または私は複数のコアを持つコンピュータが必要ですか?私は本当に並列コンピューティングの概念全体に私の質問がばかだと私を許してください新しいです。
"*複数のコアを持つコンピュータが必要ですか?*" =>はい。下記のように、パフォーマンスを向上させるために、少なくとも100以上のバッチで列をグループ化してください。 – assylias