/
EugenyCh7
/
JavaAndScalaLessons
Обзор
Документация
Войти
/
EugenyCh7
/
JavaAndScalaLessons
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
JavaTest/src/ch8/ex2/Main.java
59 строк
2 KB
Eugeny Chekmarev
IDEA update
15 июн 2021, 21:11
15 июн 2021, 21:11
47fadf9
Код
Авторство
О чём код?
package ch8.ex2; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { String fileName = "Мёртвые души.txt"; int minLength = 5; int times = 100; try { String text = Files.readString(Paths.get(fileName)); long totalSeq = 0; long totalPar = 0; double seqAvg; double parAvg; long t0, t1; for (int i = 1; i <= times; i++) { // Sequential t0 = System.currentTimeMillis(); long countSeq = countWordsSequential(text, minLength); t1 = System.currentTimeMillis(); totalSeq += t1 - t0; // Parallel t0 = System.currentTimeMillis(); long countPar = countWordsParallel(text, minLength); t1 = System.currentTimeMillis(); totalPar += t1 - t0; // Checking if (countSeq == 0 || countSeq != countPar) throw new Exception("Неоднозначный результат функций"); } seqAvg = totalSeq * 1.0 / times; parAvg = totalPar * 1.0 / times; System.out.printf("Среднее время без распараллеливания: %.3f мс\n", seqAvg); System.out.printf("Среднее время с распараллеливанием: %.3f мс\n", parAvg); } catch (Exception ex) { System.out.printf("Ошибка чтения из файла:\n%s\n", ex.getMessage()); } } public static long countWordsSequential(String text, int minLength) { return Arrays.stream(text.split("[^\\pL']+")) .filter(s -> s.length() >= minLength) .count(); } public static long countWordsParallel(String text, int minLength) { return Arrays.stream(text.split("[^\\pL']+")).parallel() .filter(s -> s.length() >= minLength) .count(); } }