Я написал код Java, что его время работы ужасно. Я знаю, может быть, мой код не эффективен, и я не сосредотачиваюсь на том, чтобы сделать эффективный. В это время только самое главное - быстрее работать с моим кодом. У меня есть доступ к кластеру с более чем 20 узлами. Ниже приведена схема этой части моего кода, которая занимает слишком много времени для запуска. Первые итерации цикла полностью независимы друг от друга.Запуск моего java-кода на нескольких серверах
for (int i = 0; i < 1000000; i++) {
for (int j = 0; j < 10000; j++) {
HashSet temp1 = new HashSet();
for (int k = 0; k < 10; k++) {
HashSet temp2 = new HashSet();
boolean isSubset = temp1.containsAll(temp2);
if (isSubset == true) {
BufferedReader input = new BufferedReader(new FileReader("input.txt"));
HashSet temp3 = new HashSet();
for (int l = 0; l < 10000; l++) {
boolean isSubset1 = temp1.containsAll(temp3);
}
}
}
}
}
Основываясь на моем базовых знаний распределенных вычислений, я могу запустить его на нескольких серверах, чтобы получить результаты быстрее, а также я думаю, что MapReduce еще одна идея. У меня нет опыта параллельной обработки. Мне нужно несколько идей и направлений, как я могу распараллелить его? Есть ли какая-нибудь платформа, чтобы сделать ее параллельной? MapReduce - хорошая идея? Надеюсь, вы можете помочь мне с некоторыми идеями, учебными пособиями или аналогичными примерами. Благодарю.
10 до 11 итераций мощности - Я думаю, что вы будете нужно много машин – KevinDTimm
@KevinDTimm: Вы правы! У меня есть доступ к более чем 20 серверам. Надеюсь, этого достаточно. – user2330489
может быть на самом деле выше, чем я думаю, зависит от того, насколько часто «isSubset» является истинным – dardo