Вычисление факториала или мощь Stream API
|
|
Среда, 15 Апреля 2015 г. 14:28
+ в цитатник
На днях появилась статья
5nw Два способа быстрого вычисления факториала, в которой приводится идея ускорения подсчёта факториала с помощью группировки перемножаемых чисел в дерево по принципу «разделяй и властвуй». Взглянув на это, я сразу понял, что тут параллельные потоки Java проявят себя во всей красе: ведь они делят задачу на подзадачи с помощью сплитераторов именно таким образом. Получается, что быстрая реализация будет ещё и красивой:
public static BigInteger streamedParallel(int n) {
if(n < 2) return BigInteger.valueOf(1);
return IntStream.rangeClosed(2, n).parallel().mapToObj(BigInteger::valueOf).reduce(BigInteger::multiply).get();
}
Читать дальше → http://habrahabr.ru/post/255813/
Метки:
Программирование
Параллельное программирование
java
stream api
streams
spliterator
многопоточность
совершенный код
-
Запись понравилась
-
0
Процитировали
-
0
Сохранили
-