Aktualizr
C++ SOTA Client
All Classes Namespaces Files Functions Variables Enumerations Enumerator Pages
stats.cc
1 #include "stats.h"
2 #include <cstdlib>
3 #include <iostream>
4 
5 Histogram::Histogram() { hdr_init(1, 3L * 60 * 1000, 3, &histogram); }
6 
7 Histogram::~Histogram() { free(histogram); }
8 void Histogram::print() { hdr_percentiles_print(histogram, stdout, 5, 1.0, CLASSIC); }
9 Histogram &Histogram::operator+=(const Histogram &rhs) {
10  hdr_add(histogram, rhs.histogram);
11  return *this;
12 }
13 int64_t Histogram::totalCount() { return histogram->total_count; }
14 
15 void Statistics::recordSuccess(const std::chrono::milliseconds &duration) { successDurations.record(duration); }
16 
17 void Statistics::recordFailure(const std::chrono::milliseconds &duration) { errorDurations.record(duration); }
18 
19 void Statistics::print() {
20  successDurations.print();
21  std::chrono::seconds elapsedTime = std::chrono::duration_cast<std::chrono::seconds>(finishedAt - startedAt);
22  std::cout << "Elapsed time: " << elapsedTime.count() << "s ";
23  std::cout << "Rate: " << successDurations.totalCount() / elapsedTime.count() << "op/s";
24 }
25 
26 Statistics &Statistics::operator+=(const Statistics &rhs) {
27  successDurations += rhs.successDurations;
28  return *this;
29 }
30 
31 void Statistics::start() { startedAt = clock::now(); }
32 void Statistics::stop() { finishedAt = clock::now(); }
Statistics
Definition: stats.h:20
Histogram
Definition: stats.h:7