use_benchmark_in_class_example.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #include <prometheus/registry.h>
  2. #include <prometheus/benchmark.h>
  3. #include <prometheus/text_serializer.h>
  4. #include <array>
  5. #include <chrono>
  6. #include <cstdlib>
  7. #include <memory>
  8. #include <string>
  9. #include <thread>
  10. #include <iostream>
  11. // use prometheus namespace
  12. using namespace prometheus;
  13. // create global registry for use it from our classes
  14. static Registry globalRegistry;
  15. class MyClass {
  16. Benchmark::Family& benchmarkFamily { Benchmark::Family::Build(globalRegistry,
  17. "benchmark_family", "family for check benchmark functionality") };
  18. Benchmark& benchmark1 { benchmarkFamily.Add({{"number", "1"}}) };
  19. Benchmark& benchmark2 { benchmarkFamily.Add({{"number", "2"}}) };
  20. public:
  21. MyClass() = default;
  22. void member_to_do_something() {
  23. benchmark1.start();
  24. benchmark2.start();
  25. std::this_thread::sleep_for(std::chrono::milliseconds(500));
  26. benchmark1.stop();
  27. std::this_thread::sleep_for(std::chrono::milliseconds(500));
  28. benchmark2.stop();
  29. }
  30. };
  31. int main() {
  32. MyClass myClass;
  33. for (;; ) {
  34. std::this_thread::sleep_for(std::chrono::seconds(1));
  35. myClass.member_to_do_something();
  36. TextSerializer text_serializer;
  37. text_serializer.Serialize(std::cout, globalRegistry.Collect());
  38. }
  39. }