Параллельный поток Java медленнее, чем последовательный, при имитации данных с использованием RandomStringUtilsJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Параллельный поток Java медленнее, чем последовательный, при имитации данных с использованием RandomStringUtils

Сообщение Anonymous »

У меня есть запись в базе данных, содержащая около 1000000 абзацев примерно по 500 символов каждый. Прочитав все записи, мне нужно получить список алфавитов, упорядоченный от наиболее используемого к наименее используемому.
Я имитирую чтение базы данных, создавая поток до 1000000, а затем обрабатываю поток параллельно< /p>

Код: Выделить всё

final Map charCountMap = new ConcurrentHashMap();
for (char c = 'a'; c  i).limit(1000000).parallel() //mock database stream
.forEach(i-> RandomStringUtils.randomAlphanumeric(500)
.toLowerCase().chars().mapToObj(c -> Character.valueOf((char) c)).filter(c -> c >= 97 && c  charCountMap.compute(c, (k, v) -> v + 1))); //update ConcurrentHashMap

long end = System.currentTimeMillis();
System.out.println("Parallel Stream time spent :" + (end - start));

System.out.println("Serial Stream"); start = System.currentTimeMillis();
Stream.iterate(0, i -> i).limit(1000000) //mock database stream
.forEach(i-> RandomStringUtils.randomAlphanumeric(500)
.toLowerCase().chars().mapToObj(c -> Character.valueOf((char) c)).filter(c -> c >= 97 && c  charCountMap.compute(c, (k, v) -> v + 1)));
end = System.currentTimeMillis();
System.out.println("Serial Stream time spent :" + (end - start));
Сначала я думал, что параллельный поток будет быстрее, даже если ожидаемые накладные расходы для потока превышают 100 000. Однако тест показывает, что последовательный поток примерно в 5 раз быстрее параллельного даже для 1 000 000 записей.
Я подозревал, что это произошло из-за обновления ConcurrentHashMap. Но когда я удалил его и изменил пустую функцию, все еще существует значительный разрыв в производительности.
Что-то не так в вызове макета моей базы данных или в том, как я использую параллельный поток?

Подробнее здесь: https://stackoverflow.com/questions/723 ... stringutil
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»