23namespace MultiProcess {
39 ProcessTimer::duration_map_t::key_type sec_name;
40 ProcessTimer::duration_map_t::mapped_type duration_list;
42 std::tie(sec_name, duration_list) = durations_element;
43 if (sec_name != to_return) {
49 throw ::invalid_argument(
"section name " + to_return +
50 " not found in timer map, so it cannot"
60 }
else if (it->second.size() % 2 != 0) {
62 throw ::invalid_argument(
"Section name " + section_name +
63 " timer has already started, and was not stopped before calling `start_timer`");
66 it->second.push_back(chrono::steady_clock::now());
75 throw ::invalid_argument(
"Section name " + section_name +
" timer was never started!");
76 }
else if (it->second.size() % 2 == 0) {
78 throw ::invalid_argument(
"Section name " + section_name +
79 " timer does exist, but was not started before calling `end_timer`");
82 it->second.push_back(chrono::steady_clock::now());
97 ProcessTimer::duration_map_t::key_type sec_name;
98 ProcessTimer::duration_map_t::mapped_type duration_list;
100 std::tie(sec_name, duration_list) = durations_element;
101 if (to_print !=
"all" && sec_name != to_print)
105 long total_duration = 0;
106 cout <<
"Section name " << sec_name <<
":" << endl;
107 for (
auto it = duration_list.begin(); it != duration_list.end(); ++it) {
108 long duration = chrono::duration_cast<chrono::milliseconds>(*std::next(it) - *it).count();
109 cout <<
"Duration " << i <<
": " << duration <<
"ms +" << endl;
110 total_duration += duration;
113 cout <<
"--------------------" << endl <<
"Total: " << total_duration <<
"ms" << endl << endl;
120 ProcessTimer::duration_map_t::key_type sec_name;
121 ProcessTimer::duration_map_t::mapped_type duration_list;
123 std::tie(sec_name, duration_list) = durations_element;
125 cout <<
"Section name " << sec_name <<
":" << endl;
126 for (
auto it = duration_list.begin(); it != duration_list.end(); ++it) {
127 long duration_since_begin_start =
130 long duration_since_begin_end =
133 cout <<
"Duration " << i <<
": " << duration_since_begin_start <<
"ms-->" << duration_since_begin_end <<
"ms"
146 list<long> durations_since_begin;
148 ProcessTimer::duration_map_t::key_type sec_name;
149 ProcessTimer::duration_map_t::mapped_type duration_list;
151 std::tie(sec_name, duration_list) = durations_element;
152 durations_since_begin.clear();
153 for (
auto const ×tamp : duration_list) {
154 durations_since_begin.push_back(
157 j[sec_name] = durations_since_begin;
159 file << std::setw(4) << j;
168 meta.push_back(std::move(
data));
169 j[
"metadata"] = meta;
171 file << std::setw(4) << j;
183 meta[
"write_interval"] =
true;
184 j[
"metadata"] = meta;
186 file << std::setw(4) << j;
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
static void add_metadata(json data)
static void print_timestamps()
static void set_write_interval(int write_interval)
static void print_durations(std::string to_print="all")
static std::chrono::time_point< std::chrono::steady_clock > begin
static std::list< std::chrono::time_point< std::chrono::steady_clock > > get_durations(std::string section_name)
static pid_t get_process()
static std::chrono::time_point< std::chrono::steady_clock > previous_write
static void start_timer(std::string section_name)
std::map< std::string, std::list< std::chrono::time_point< std::chrono::steady_clock > > > duration_map_t
static int write_interval
static duration_map_t durations
static void end_timer(std::string section_name)
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...