]> git.sesse.net Git - nageru/blobdiff - metrics.cpp
Fix a problem where not all Quick Sync metrics would get initialized.
[nageru] / metrics.cpp
index 3468ed766b17cbd11b987fcaac03ddfd8414dd51..fd5e54c1c7f48b09d38f64ddd91d84bee4a3b6c0 100644 (file)
@@ -1,15 +1,23 @@
 #include "metrics.h"
 
 #include <assert.h>
+#include <math.h>
 
 #include <algorithm>
+#include <chrono>
 #include <locale>
 #include <sstream>
 
 using namespace std;
+using namespace std::chrono;
 
 Metrics global_metrics;
 
+double get_timestamp_for_metrics()
+{
+       return duration<double>(system_clock::now().time_since_epoch()).count();
+}
+
 namespace {
 
 string serialize_name(const string &name, const vector<pair<string, string>> &labels)
@@ -119,6 +127,15 @@ void Histogram::init_uniform(size_t num_buckets)
        }
 }
 
+void Histogram::init_geometric(double min, double max, size_t num_buckets)
+{
+       this->num_buckets = num_buckets;
+       buckets.reset(new Bucket[num_buckets]);
+       for (size_t i = 0; i < num_buckets; ++i) {
+               buckets[i].val = min * pow(max / min, double(i) / (num_buckets - 1));
+       }
+}
+
 void Histogram::count_event(double val)
 {
        Bucket ref_bucket;