9 void Progress_Bar::print_progress() noexcept
16 const auto now = std::chrono::steady_clock::now();
17 std::chrono::duration<double> duration_since_last = now - last_print_time;
18 if (done == total || duration_since_last.count() >= gap)
20 std::chrono::duration<double> duration_since_start = now - start;
21 last_print_time = now;
23 const double duration = duration_since_start.count();
26 std::ostringstream line;
28 line << std::fixed << std::setprecision(1);
29 const int width = int(std::to_string(total).size());
30 line << std::setw(width) << done <<
" / " << total <<
' ';
31 line << std::setw(5) << 100.0f*float(done)/float(total) <<
'%';
39 double n = double(done) / duration;
53 line << std::fixed << std::setprecision(1) << n << unit <<
"/s";
58 const double time_left = double(total - done) * duration / double(done);
59 line <<
"; " << time_left <<
"s left";
63 logger.
log(line.str());
90 start(std::chrono::steady_clock::now()),
91 last_print_time(start)
virtual void log(const std::string &message) noexcept
void print(int64_t current)
Progress_Bar(int64_t total, Logger &logger)