diff options
Diffstat (limited to 'lib/statistics.h')
-rw-r--r-- | lib/statistics.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/lib/statistics.h b/lib/statistics.h new file mode 100644 index 00000000..8f974aae --- /dev/null +++ b/lib/statistics.h @@ -0,0 +1,70 @@ +// ************************************************************************** +// * This file is part of the FreeFileSync project. It is distributed under * +// * GNU General Public License: http://www.gnu.org/licenses/gpl.html * +// * Copyright (C) 2008-2011 ZenJu (zhnmju123 AT gmx.de) * +// ************************************************************************** + +#ifndef STATISTICS_H_INCLUDED +#define STATISTICS_H_INCLUDED + +#include <vector> +#include <map> +#include <memory> +#include <wx/defs.h> +#include <wx/string.h> +#include <wx/stopwatch.h> + +class RetrieveStatistics +{ +public: + wxDEPRECATED(~RetrieveStatistics()); //generate compiler warnings as a reminder to remove code after measurements + void writeEntry(double value, int objects); + +private: + struct StatEntry + { + long time; + int objects; + double value; + }; + std::vector<StatEntry> data; + wxStopWatch timer; +}; + + +class Statistics +{ +public: + Statistics(int totalObjectCount, + double totalDataAmount, + unsigned windowSizeRemainingTime, //time in ms + unsigned windowSizeBytesPerSecond); //time in ms + + void addMeasurement(int objectsCurrent, double dataCurrent); + wxString getRemainingTime() const; //returns the remaining time in milliseconds + wxString getBytesPerSecond() const; + + void pauseTimer(); + void resumeTimer(); + +private: + const int objectsTotal; + const double dataTotal; + + const unsigned windowSizeRemTime; //"window width" of statistics used for calculation of remaining time in ms + const unsigned windowSizeBPS; // + const unsigned windowMax; + + struct Record + { + int objects; //object count + double data; //unit: bytes + }; + + typedef std::multimap<long, Record> TimeRecordMap; //time, unit: milliseconds + TimeRecordMap measurements; // + + wxStopWatch timer; +}; + +#endif // STATISTICS_H_INCLUDED |