Merge pull request #70 from phdussud/master

limit the progressBar update rate to 5 per second. This speeds up loa…
This commit is contained in:
Gwenhael Goavec-Merou 2021-01-03 16:19:33 +01:00 committed by GitHub
commit 4ed01ae9ee
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 6 deletions

View File

@ -23,10 +23,16 @@
ProgressBar::ProgressBar(std::string mess, int maxValue, int progressLen):
_mess(mess), _maxValue(maxValue), _progressLen(progressLen)
{
last_time = clock();
}
void ProgressBar::display(int value)
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 +47,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");
}

View File

@ -17,19 +17,20 @@
#ifndef PROGRESSBARE_HPP
#define PROGRESSBARE_HPP
#include <time.h>
#include <iostream>
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:
std::string _mess;
int _maxValue;
int _progressLen;
clock_t last_time; //records the time of last progress bar update
};
#endif