]> Git Repo - VerusCoin.git/blob - src/snark/src/common/profiling.hpp
9619117f4b755bb9b7e845bc3725ae5d226cc47f
[VerusCoin.git] / src / snark / src / common / profiling.hpp
1 /** @file
2  *****************************************************************************
3
4  Declaration of functions for profiling code blocks.
5
6  Reports time, operation counts, memory usage, and others.
7
8  *****************************************************************************
9  * @author     This file is part of libsnark, developed by SCIPR Lab
10  *             and contributors (see AUTHORS).
11  * @copyright  MIT license (see LICENSE file)
12  *****************************************************************************/
13
14 #ifndef PROFILING_HPP_
15 #define PROFILING_HPP_
16
17 #include <cstddef>
18 #include <map>
19 #include <string>
20 #include <vector>
21
22 namespace libsnark {
23
24 void start_profiling();
25 long long get_nsec_time();
26 void print_time(const char* msg);
27 void print_header(const char* msg);
28
29 void print_indent();
30
31 extern bool inhibit_profiling_info;
32 extern bool inhibit_profiling_counters;
33 extern std::map<std::string, size_t> invocation_counts;
34 extern std::map<std::string, long long> last_times;
35 extern std::map<std::string, long long> cumulative_times;
36
37 void clear_profiling_counters();
38
39 void print_cumulative_time_entry(const std::string &key, const long long factor=1);
40 void print_cumulative_times(const long long factor=1);
41 void print_cumulative_op_counts(const bool only_fq=false);
42
43 void enter_block(const std::string &msg, const bool indent=true);
44 void leave_block(const std::string &msg, const bool indent=true);
45
46 void print_mem(const std::string &s = "");
47 void print_compilation_info();
48
49 } // libsnark
50
51 #endif // PROFILING_HPP_
This page took 0.01772 seconds and 2 git commands to generate.