From 11baca9337bcab44acfdb2ed7171c82be043effa Mon Sep 17 00:00:00 2001 From: phdussud Date: Thu, 24 Dec 2020 14:35:05 -0800 Subject: [PATCH 1/2] limit the progressBar update rate to 5 per second. This speeds up loading of small bin files. --- src/progressBar.cpp | 15 +++++++++++---- src/progressBar.hpp | 2 +- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/progressBar.cpp b/src/progressBar.cpp index 8b07831..f1d02a4 100644 --- a/src/progressBar.cpp +++ b/src/progressBar.cpp @@ -17,6 +17,7 @@ #include #include +#include "time.h" #include "progressBar.hpp" #include "display.hpp" @@ -24,9 +25,15 @@ ProgressBar::ProgressBar(std::string mess, int maxValue, int progressLen): _mess(mess), _maxValue(maxValue), _progressLen(progressLen) { } - -void ProgressBar::display(int value) +static time_t last_time; +void ProgressBar::display(int value, char force) { + clock_t this_time = clock(); + if (!force && ((((float)(this_time - last_time))/CLOCKS_PER_SEC) < 0.2)) + { + return; + } + last_time = this_time; float percent = ((float)value * 100.0f)/(float)_maxValue; float nbEq = (percent * (float) _progressLen)/100.0f; @@ -41,13 +48,13 @@ void ProgressBar::display(int value) } void ProgressBar::done() { - display(_maxValue); + display(_maxValue, true); //fprintf(stderr, "\nDone\n"); printSuccess("\nDone"); } void ProgressBar::fail() { - display(_maxValue); + display(_maxValue, true); //fprintf(stderr, "\nDone\n"); printError("\nFail"); } diff --git a/src/progressBar.hpp b/src/progressBar.hpp index 7a7a7d7..b90c231 100644 --- a/src/progressBar.hpp +++ b/src/progressBar.hpp @@ -23,7 +23,7 @@ class ProgressBar { public: ProgressBar(std::string mess, int maxValue, int progressLen); - void display(int value); + void display(int value, char force = 0); void done(); void fail(); private: From 717870e18b957fe7748f0d6631f4b7fb4914b7ba Mon Sep 17 00:00:00 2001 From: phdussud Date: Mon, 28 Dec 2020 09:33:35 -0800 Subject: [PATCH 2/2] Made last_time a private member of the ProgressBar class per code review comment. --- src/progressBar.cpp | 3 +-- src/progressBar.hpp | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/progressBar.cpp b/src/progressBar.cpp index f1d02a4..43cd072 100644 --- a/src/progressBar.cpp +++ b/src/progressBar.cpp @@ -17,15 +17,14 @@ #include #include -#include "time.h" #include "progressBar.hpp" #include "display.hpp" ProgressBar::ProgressBar(std::string mess, int maxValue, int progressLen): _mess(mess), _maxValue(maxValue), _progressLen(progressLen) { + last_time = clock(); } -static time_t last_time; void ProgressBar::display(int value, char force) { clock_t this_time = clock(); diff --git a/src/progressBar.hpp b/src/progressBar.hpp index b90c231..9e54758 100644 --- a/src/progressBar.hpp +++ b/src/progressBar.hpp @@ -17,7 +17,7 @@ #ifndef PROGRESSBARE_HPP #define PROGRESSBARE_HPP - +#include #include class ProgressBar { @@ -30,6 +30,7 @@ class ProgressBar { std::string _mess; int _maxValue; int _progressLen; + clock_t last_time; //records the time of last progress bar update }; #endif