7#include <unordered_map>
10#include <google/protobuf/util/json_util.h>
11#include <spdlog/spdlog.h>
13#include "api/performance.pb.h"
50 std::atomic<uint64_t> call_count_{0};
53 std::atomic<uint64_t> min_duration_ns_{std::numeric_limits<uint64_t>::max()};
56 std::atomic<uint64_t> max_duration_ns_{0};
59 std::atomic<uint64_t> latest_duration_ns_{0};
62 std::atomic<uint64_t> total_duration_ns_{0};
65 static constexpr size_t kNumSamples = 100;
68 std::mutex samples_mutex_;
71 std::vector<uint64_t> time_samples_;
74 std::chrono::steady_clock::time_point start_time_;
91 void add(
const std::string& name);
97 void remove(
const std::string& name);
103 void start(
const std::string& name);
109 void stop(
const std::string& name);
116 synapse::FunctionProfile
get(
const std::string& name);
122 std::vector<synapse::FunctionProfile>
get_all();
132 std::shared_mutex profilers_mutex_;
135 std::unordered_map<std::string, std::unique_ptr<FunctionProfiler>> profilers_;
std::vector< synapse::FunctionProfile > get_all()
Get profiles for all functions.
Definition function_profiler.cpp:122
synapse::FunctionProfile get(const std::string &name)
Get the profile for a specific function.
Definition function_profiler.cpp:107
void start(const std::string &name)
Start timing a function.
Definition function_profiler.cpp:83
void stop(const std::string &name)
Stop timing a function.
Definition function_profiler.cpp:95
void add(const std::string &name)
Add a new profiler for the specified function.
Definition function_profiler.cpp:69
FunctionProfilerManager()=default
Default constructor.
void print_profile(const std::string &name)
Print a function's profile information.
Definition function_profiler.cpp:135
void remove(const std::string &name)
Remove a profiler.
Definition function_profiler.cpp:78
void stop()
Stop timing and record the duration.
Definition function_profiler.cpp:9
synapse::FunctionProfile get_profile()
Get the current profile statistics.
Definition function_profiler.cpp:30
FunctionProfiler(const std::string &name)
Constructor for FunctionProfiler.
Definition function_profiler.cpp:5
void start()
Start timing a function call.
Definition function_profiler.cpp:7