У меня есть Stream
обрабатывающий несколько миллионов элементов. Алгоритм Map-Reduce позади него занимает несколько миллисекунд, поэтому выполнение задачи занимает около двадцати минут.
Stream<MyData> myStream = readData();
MyResult result = myStream
.map(row -> process(row))
.peek(stat -> System.out.println("Hi, I processed another item"))
.reduce(MyStat::aggregate);
Я хотел бы показать общий прогресс, вместо того, чтобы печатать строку на элемент (что приводит к тысячам строк в секунду, требует времени и не дает никакой полезной информации об общем прогрессе). Я хотел бы показать что-то похожее на:
5% (08s)
10% (14s)
15% (20s)
...
Какой был бы лучший (и/или самый простой) способ сделать это?