diff options
author | Marcelo Fernandez <marcelofg55@gmail.com> | 2018-08-20 12:18:12 -0300 |
---|---|---|
committer | Marcelo Fernandez <marcelofg55@gmail.com> | 2018-11-27 09:45:56 -0300 |
commit | 209dd56cb0241a9acda3d33dc59857ad7e5f3cdb (patch) | |
tree | b1af89d309255e736fb6f210aeb585c2908b8487 /include/core/GodotProfiling.hpp | |
parent | f4476351f00485e45a18d3613e41899388482dee (diff) | |
download | redot-cpp-209dd56cb0241a9acda3d33dc59857ad7e5f3cdb.tar.gz |
Profiling support
Diffstat (limited to 'include/core/GodotProfiling.hpp')
-rw-r--r-- | include/core/GodotProfiling.hpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/include/core/GodotProfiling.hpp b/include/core/GodotProfiling.hpp new file mode 100644 index 0000000..0862d0b --- /dev/null +++ b/include/core/GodotProfiling.hpp @@ -0,0 +1,34 @@ +#ifndef GODOT_PROFILING_HPP +#define GODOT_PROFILING_HPP + +#include "OS.hpp" + + +namespace godot { + +class FunctionProfiling { + char signature[1024]; + uint64_t ticks; + +public: + FunctionProfiling(const char *p_function, const int p_line) { + snprintf(signature, 1024, "::%d::%s", p_line, p_function); + ticks = OS::get_singleton()->get_ticks_usec(); + } + ~FunctionProfiling() { + uint64_t t = OS::get_singleton()->get_ticks_usec() - ticks; + if (t > 0) { + Godot::gdnative_profiling_add_data(signature, t); + } + } +}; + +} + +#ifdef DEBUG_ENABLED +#define GODOT_PROFILING_FUNCTION FunctionProfiling __function_profiling(__FUNCTION__, __LINE__); +#else +#define GODOT_PROFILING_FUNCTION +#endif + +#endif |