9#include <unordered_map>
19 return val !=
nullptr && std::string(val) ==
"1";
34 std::chrono::high_resolution_clock::time_point
enter_time;
35 std::chrono::high_resolution_clock::time_point
exit_time;
36 std::unordered_map<std::string, uint64_t>
metrics;
44 std::vector<std::unique_ptr<Node>>
roots_;
55 std::string
report(
const std::string& title);
94 return analysis_statistics;
101 inst.enter_analysis(name);
116 inst.exit_analysis();
123 inst.enter_pass(name);
145 inst.enter_pipeline(name);
156 inst.exit_pipeline();
167 inst.enter_stage(name);
189 inst.set_metric(key, value);
196 inst.add_metric(key, value);
224 bool enabled_ =
false;
225 std::unordered_map<std::string, uint64_t> count_, time_;
230 return codegen_statistics;
Definition statistics.h:222
void enable()
Definition statistics.h:236
static CodegenStatistics & instance()
Definition statistics.h:228
bool enabled()
Definition statistics.h:233
void add_codegen(const std::string &name, uint64_t milliseconds)
void disable()
Definition statistics.h:239
Definition statistics.h:73
static void enter_pipeline_if_enabled(const std::string &name)
Definition statistics.h:142
static void exit_analysis_if_enabled()
Definition statistics.h:113
static void enter_stage_if_enabled(const std::string &name)
Definition statistics.h:164
void exit_pipeline()
Definition statistics.h:160
void enter_stage(const std::string &name)
Definition statistics.h:171
static constexpr const char * PIPELINE_SCOPE
Definition statistics.h:87
static void exit_pipeline_if_enabled()
Definition statistics.h:153
static void enter_analysis_if_enabled(const std::string &name)
Definition statistics.h:98
static void summarize_pipeline_passes(std::ostream &out, const Node &node, int depth)
void exit_analysis()
Definition statistics.h:109
static void exit_pass_if_enabled()
Definition statistics.h:131
void exit_stage()
Definition statistics.h:182
std::string report(ReportLevel detail)
static bool enabled_
Definition statistics.h:82
static void enable()
Definition statistics.h:203
static void add_metric_if_enabled(const std::string &key, uint64_t value)
Definition statistics.h:193
void enter_pipeline(const std::string &name)
Definition statistics.h:149
RemapAction custom_print_node(std::ostream &out, const Node &node, int depth) override
static void set_metric_if_enabled(const std::string &key, uint64_t value)
Definition statistics.h:186
static constexpr const char * PASS_SCOPE
Definition statistics.h:86
static constexpr const char * STAGE_SCOPE
Definition statistics.h:88
void exit_pass()
Definition statistics.h:138
void enter_analysis(const std::string &name)
Definition statistics.h:105
static void enter_pass_if_enabled(const std::string &name)
Definition statistics.h:120
static bool enabled()
Definition statistics.h:200
static constexpr const char * ANALYSIS_MGR_SCOPE
Definition statistics.h:85
ReportLevel report_detail_
Definition statistics.h:89
static constexpr const char * ANALYSIS_SCOPE
Definition statistics.h:84
ReportLevel
Definition statistics.h:75
@ SummarizePipelineContentsAndAnalysis
Definition statistics.h:77
@ PipelineTotalsOnly
Definition statistics.h:76
@ All
Definition statistics.h:78
void enter_pass(const std::string &name)
Definition statistics.h:127
static void exit_stage_if_enabled()
Definition statistics.h:175
static CompileStatistics & instance()
Definition statistics.h:92
static void disable()
Definition statistics.h:206
Definition statistics.h:29
virtual RemapAction custom_print_node(std::ostream &out, const Node &, int depth)
static void print_node_self(std::ostream &stream, const Node &node, int depth)
void print_node(std::ostream &stream, const HierarchicalStatistics::Node &node, int depth)
Node * current_
Definition statistics.h:45
RemapAction
Definition statistics.h:47
@ NoDescend
Definition statistics.h:47
@ Skip
Definition statistics.h:47
@ Proceed
Definition statistics.h:47
void set_metric(const std::string &key, uint64_t value)
std::vector< std::unique_ptr< Node > > roots_
Definition statistics.h:44
void add_metric(const std::string &key, uint64_t value)
virtual ~HierarchicalStatistics()=default
std::string report(const std::string &title)
Node * enter_scope(const std::string &name, const std::string &scope_type)
Definition local_buffer_reuse.h:24
Definition approximate_math.h:12
bool statistics_enabled_by_env()
Definition statistics.h:17
constexpr const char * DOCC_STATISTICS_ENV
Definition statistics.h:15
int statistics_mode_env()
Definition statistics.h:31
std::chrono::high_resolution_clock::time_point exit_time
Definition statistics.h:35
std::string scope_type
Definition statistics.h:32
std::string name
Definition statistics.h:33
std::chrono::high_resolution_clock::time_point enter_time
Definition statistics.h:34
uint64_t duration_ms() const
Node * parent
Definition statistics.h:37
std::unordered_map< std::string, uint64_t > metrics
Definition statistics.h:36
std::vector< std::unique_ptr< Node > > children
Definition statistics.h:38