Hermes
|
Singleton code profiler. More...
Classes | |
class | Block |
Holds a labeled profiler block with start/end time points. More... | |
struct | BlockDescriptor |
Describes a block label. More... | |
class | ScopedBlock |
RAII Profiler Block. More... | |
Public Member Functions | |
Profiler (Profiler &&other)=delete | |
Profiler (const Profiler &other)=delete | |
Profiler & | operator= (const Profiler &other)=delete |
Profiler & | operator= (Profiler &&other)=delete |
Static Public Member Functions | |
static const std::vector< Block > & | blockList () |
Raw block data. More... | |
static const BlockDescriptor & | blockDescriptor (const Block &block) |
Get block descriptor from block. More... | |
static u64 | initTime () |
Get time point when Profiler was instantiated. More... | |
static i64 | cpuFrequency () |
Computed CPU frequency. More... | |
static bool | isEnabled () |
Checks if Profiler is currently enabled. More... | |
static void | enable () |
Enables Profiler. | |
static void | disable () |
Disables Profiler. | |
static u32 | pushBlockDescriptor (const char *name, u32 color=argb_colors::Default) |
Registers a new block description. More... | |
static void | startBlock (Block &block) |
Starts a new block by taking this call time point. More... | |
static void | endBlock () |
Finishes the block at the top of the stack. More... | |
static void | setMaxBlockCount (size_t max_block_count) |
Sets a limit into the maximum number of stored blocks. More... | |
static void | reset () |
Clears all blocks. | |
static void | iterateBlocks (const std::function< void(const Block &)> &f) |
Iterates over stored blocks sequentially. More... | |
static std::string | dump () |
Dumps profiling into a string. | |
Singleton code profiler.
This profiler works by registering a sequence labeled blocks (time intervals). The labeled blocks can represent blocks of code lines, functions bodies and sections. Blocks can also reside inside other blocks constituting hierarchies - useful to find out which section of a function is slower for example.
Ideally, the class should be used indirectly by the auxiliary MACROS. Here is an example of different types of blocks being used:
|
static |
Get block descriptor from block.
block |
|
static |
Raw block data.
|
static |
Computed CPU frequency.
|
static |
Finishes the block at the top of the stack.
|
static |
Get time point when Profiler was instantiated.
|
static |
Checks if Profiler is currently enabled.
|
static |
Iterates over stored blocks sequentially.
f | callback function for each block |
|
static |
Registers a new block description.
name | |
color |
|
static |
Sets a limit into the maximum number of stored blocks.
max_block_count |
|
static |
Starts a new block by taking this call time point.
block |