class
#include <Magnum/DebugTools/Profiler.h>
Profiler Profiler.
Measures time passed during specified sections of each frame. It's meant to be used in rendering and event loops (e.g. Platform::
DebugTools::Profiler p; // Register named sections struct { DebugTools::Profiler::Section ai, physics, draw, bufferSwap; } sections; sections.ai = p.addSection("AI"); sections.physics = p.addSection("Physics"); sections.draw = p.addSection("Drawing"); sections.bufferSwap = p.addSection("Buffer swap"); // Enable profiling p.enable(); // Mark sections in draw function void MyApplication::drawEvent() { p.start(); // ... misc stuff belonging to "Other" section p.start(sections.ai); // ... AI computation p.start(sections.physics); // ... physics simulation p.start(sections.draw); camera.draw(drawables); p.start(sections.bufferSwap); swapBuffers(); // Count everything before next call to drawEvent() into "Other" section p.start(); // Mark start of next frame p.nextFrame(); } // Print statistics to debug output, showing how much time each section took p.printStatistics();
It's possible to start profiler only for certain parts of the code and then stop it again using stop(), if you are not interested in profiling the rest.
Public types
- using Section = UnsignedInt
- Section ID.
Public static variables
- static const Section otherSection
- Default section.
Public functions
-
void setMeasureDuration(std::
size_t frames) - Set measure duration.
-
auto addSection(const std::
string& name) -> Section - Add named section.
- auto isEnabled() -> bool
- Whether profiling is enabled.
- void enable()
- Enable profiling.
- void disable()
- Disable profiling.
- void start(Section section)
- Start profiling of given named section.
- void start()
- Start profiling of "other" section.
- void stop()
- Stop profiling.
- void nextFrame()
- Save data from previous frame and advance to another.
- void printStatistics()
- Print statistics.
Typedef documentation
typedef UnsignedInt Magnum:: DebugTools:: Profiler:: Section
Section ID.
Function documentation
void Magnum:: DebugTools:: Profiler:: setMeasureDuration(std:: size_t frames)
Set measure duration.
Measured data are averaged through given frame count. Default value is 60
.
Section Magnum:: DebugTools:: Profiler:: addSection(const std:: string& name)
Add named section.
void Magnum:: DebugTools:: Profiler:: disable()
Disable profiling.
void Magnum:: DebugTools:: Profiler:: start()
Start profiling of "other" section.
Same as calling start(DebugTools::Profiler::otherSection)
.
void Magnum:: DebugTools:: Profiler:: stop()
Stop profiling.
Current time is saved for previous section.
void Magnum:: DebugTools:: Profiler:: nextFrame()
Save data from previous frame and advance to another.
Call at the end of each frame.
void Magnum:: DebugTools:: Profiler:: printStatistics()
Print statistics.
Prints statistics about previous frame ordered by duration.
Variable documentation
static const Section Magnum:: DebugTools:: Profiler:: otherSection
Default section.