#pragma once #include "ml.h" #include #include #include static const int method_name_print_len = 15; static const int print_top_methods = 15; static const int call_stack_max_methods = 10; class MlPerfMon { private: MlPerfMon() : perfOn(false) {}; public: // https://stackoverflow.com/questions/43523509/simple-singleton-example-in-c static MlPerfMon& instance(){ static MlPerfMon instance; return instance; } void turnOn(); void add_method_call(const std::string &method); void end_method_call(); std::string callstack() const; void print_results(); private: bool perfOn; std::unordered_map calls_counter; std::chrono::time_point start_time; std::deque call_stack; };