Я пробовал параллельно запускать 13 циклов for в Java и пытался переписать их с помощью DoubleStream. Проблема в том, что вывод, предоставляемый тем же кодом, но с циклами «for», отличается от вывода, предоставляемого альтернативой потоков.
Другая проблема заключается в том, что реализация циклов «for» занимает много времени, и мне нужно его улучшить. Я предполагаю, что потоковый подход неверен, потому что операция, которую я выполняю, является последовательной, а порядок потоков случайным, поэтому обработка выполняется не совсем правильно.
Могу ли я как-нибудь это сделать? получить тот же результат или распараллелить циклы for?
Мой код приведен ниже:
DoubleStream.iterate(0, x -> x + 0.2).limit(5).parallel().forEach(a -> {
System.out.println("Iteration " + a + " min var " + wrapperMinVariation.minVariation + "values: " + wrapperMinA.minA + " " + wrapperMinB.minB);
DoubleStream.iterate(0, x -> x + 0.2).limit(5).parallel().forEach(b -> {
System.out.println("Iteration " + a +" "+ b +" min var " + wrapperMinVariation.minVariation + "values: " + wrapperMinA.minA + " " + wrapperMinB.minB);
DoubleStream.iterate(0, x -> x + 0.2).limit(5).parallel().forEach(c -> {
DoubleStream.iterate(0, x -> x + 0.2).limit(5).parallel().forEach(d -> {
DoubleStream.iterate(0, x -> x + 0.2).limit(5).parallel().forEach(e -> {
DoubleStream.iterate(0, x -> x + 0.2).limit(5).parallel().forEach(f -> {
DoubleStream.iterate(0, x -> x + 0.2).limit(5).parallel().forEach(g -> {
DoubleStream.iterate(0, x -> x + 0.2).limit(5).parallel().forEach(h -> {
DoubleStream.iterate(0, x -> x + 0.2).limit(5).parallel().forEach(m -> {
DoubleStream.iterate(0, x -> x + 0.2).limit(5).parallel().forEach(n -> {
DoubleStream.iterate(0, x -> x + 0.2).limit(5).parallel().forEach(o -> {
DoubleStream.iterate(0, x -> x + 0.2).limit(5).parallel().forEach(p -> {
double variation = 0;
for (int i = 0; i < wrapper.list.size(); i++) {
// operations with a,b,c,d,e,f,g,h,m,n,o,p
variation += variationPerMatch;
}
double finalVariationMatches = variation / wrapper.list.size();
if (finalVariationMatches < wrapperMinVariation.minVariation) {
wrapperMinA.minA = a;
wrapperMinB.minB = b;
wrapperMinC.minC = c;
wrapperMinD.minD = d;
wrapperMinE.minE = e;
wrapperMinF.minF = f;
wrapperMinG.minG = g;
wrapperMinH.minH = h;
wrapperMinM.minM = m;
wrapperMinN.minN = n;
wrapperMinO.minO = o;
wrapperMinP.minP = p;
wrapperMinVariation.minVariation = finalVariationMatches;
}
});
});
});
});
});
});
});
});
});
});
});
});
Подробнее здесь: https://stackoverflow.com/questions/659 ... ifferent-r
Оптимизация вложенных циклов в Java - альтернатива потокам приводит к другому результату ⇐ JAVA
Программисты JAVA общаются здесь
1736963288
Anonymous
Я пробовал параллельно запускать 13 циклов for в Java и пытался переписать их с помощью DoubleStream. Проблема в том, что вывод, предоставляемый тем же кодом, но с циклами «for», отличается от вывода, предоставляемого альтернативой потоков.
Другая проблема заключается в том, что реализация циклов «for» занимает много времени, и мне нужно его улучшить. Я предполагаю, что потоковый подход неверен, потому что операция, которую я выполняю, является последовательной, а порядок потоков случайным, поэтому обработка выполняется не совсем правильно.
Могу ли я как-нибудь это сделать? получить тот же результат или распараллелить циклы for?
Мой код приведен ниже:
DoubleStream.iterate(0, x -> x + 0.2).limit(5).parallel().forEach(a -> {
System.out.println("Iteration " + a + " min var " + wrapperMinVariation.minVariation + "values: " + wrapperMinA.minA + " " + wrapperMinB.minB);
DoubleStream.iterate(0, x -> x + 0.2).limit(5).parallel().forEach(b -> {
System.out.println("Iteration " + a +" "+ b +" min var " + wrapperMinVariation.minVariation + "values: " + wrapperMinA.minA + " " + wrapperMinB.minB);
DoubleStream.iterate(0, x -> x + 0.2).limit(5).parallel().forEach(c -> {
DoubleStream.iterate(0, x -> x + 0.2).limit(5).parallel().forEach(d -> {
DoubleStream.iterate(0, x -> x + 0.2).limit(5).parallel().forEach(e -> {
DoubleStream.iterate(0, x -> x + 0.2).limit(5).parallel().forEach(f -> {
DoubleStream.iterate(0, x -> x + 0.2).limit(5).parallel().forEach(g -> {
DoubleStream.iterate(0, x -> x + 0.2).limit(5).parallel().forEach(h -> {
DoubleStream.iterate(0, x -> x + 0.2).limit(5).parallel().forEach(m -> {
DoubleStream.iterate(0, x -> x + 0.2).limit(5).parallel().forEach(n -> {
DoubleStream.iterate(0, x -> x + 0.2).limit(5).parallel().forEach(o -> {
DoubleStream.iterate(0, x -> x + 0.2).limit(5).parallel().forEach(p -> {
double variation = 0;
for (int i = 0; i < wrapper.list.size(); i++) {
// operations with a,b,c,d,e,f,g,h,m,n,o,p
variation += variationPerMatch;
}
double finalVariationMatches = variation / wrapper.list.size();
if (finalVariationMatches < wrapperMinVariation.minVariation) {
wrapperMinA.minA = a;
wrapperMinB.minB = b;
wrapperMinC.minC = c;
wrapperMinD.minD = d;
wrapperMinE.minE = e;
wrapperMinF.minF = f;
wrapperMinG.minG = g;
wrapperMinH.minH = h;
wrapperMinM.minM = m;
wrapperMinN.minN = n;
wrapperMinO.minO = o;
wrapperMinP.minP = p;
wrapperMinVariation.minVariation = finalVariationMatches;
}
});
});
});
});
});
});
});
});
});
});
});
});
Подробнее здесь: [url]https://stackoverflow.com/questions/65963170/nested-for-loops-optimization-in-java-streams-alternative-leads-to-different-r[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия