Irrlicht 3D Engine
irr::IProfiler Class Referenceabstract

Code-profiler. Please check the example in the Irrlicht examples folder about how to use it. More...

#include <IProfiler.h>

Public Member Functions

 IProfiler ()
 Constructor. You could use this to create a new profiler, but usually getProfiler() is used to access the global instance. More...
 
virtual ~IProfiler ()
 
void add (s32 id, const core::stringw &name, const core::stringw &groupName)
 Add an id with given name and group which can be used for profiling with start/stop. More...
 
s32 add (const core::stringw &name, const core::stringw &groupName)
 Add an automatically generated for the given name and group which can be used for profiling with start/stop. More...
 
bool findDataIndex (u32 &result, const core::stringw &name) const
 Search for the index of the profile data by name. More...
 
bool findGroupIndex (u32 &result, const core::stringw &name) const
 Find the group index by the group-name. More...
 
u32 getGroupCount () const
 Get the number of profile groups. Will be at least 1. More...
 
const SProfileDatagetGroupData (u32 index) const
 Get profile data for a group. More...
 
const SProfileDatagetProfileDataById (u32 id)
 Get the profile data. More...
 
const SProfileDatagetProfileDataByIndex (u32 index) const
 Get the profile data. More...
 
u32 getProfileDataCount () const
 Return the number of profile data blocks. There is one for each id. More...
 
virtual void printAll (core::stringw &result, bool includeOverview=false, bool suppressUncalled=true) const =0
 Write all profile-data into a string. More...
 
virtual void printGroup (core::stringw &result, u32 groupIndex, bool suppressUncalled) const =0
 Write the profile data of one group into a string. More...
 
void resetAll ()
 Reset all profile data. More...
 
void resetDataById (s32 id)
 Reset profile data for the given id. More...
 
void resetDataByIndex (u32 index)
 Reset profile data for the given index. More...
 
void resetGroup (u32 index)
 Reset profile data for a whole group. More...
 
void start (s32 id)
 Start profile-timing for the given id. More...
 
void stop (s32 id)
 Stop profile-timing for the given id. More...
 

Protected Member Functions

u32 addGroup (const core::stringw &name)
 

Protected Attributes

core::array< SProfileDataProfileDatas
 
core::array< SProfileDataProfileGroups
 
ITimerTimer
 

Detailed Description

Code-profiler. Please check the example in the Irrlicht examples folder about how to use it.

Definition at line 101 of file IProfiler.h.

Constructor & Destructor Documentation

◆ IProfiler()

irr::IProfiler::IProfiler ( )
inline

Constructor. You could use this to create a new profiler, but usually getProfiler() is used to access the global instance.

Definition at line 105 of file IProfiler.h.

◆ ~IProfiler()

virtual irr::IProfiler::~IProfiler ( )
inlinevirtual

Definition at line 108 of file IProfiler.h.

Member Function Documentation

◆ add() [1/2]

void irr::IProfiler::add ( s32  id,
const core::stringw name,
const core::stringw groupName 
)
inline

Add an id with given name and group which can be used for profiling with start/stop.

After calling this once you can start/stop profiling for the given id.

Parameters
idShould be >= 0 as negative id's are reserved for Irrlicht. Also very large numbers (near INT_MAX) might have been added automatically by the other add function.
nameName for displaying profile data.
groupNameEach id belongs into a group - this helps on displaying profile data.

Definition at line 346 of file IProfiler.h.

References addGroup(), findGroupIndex(), ProfileDatas, and resetDataByIndex().

Referenced by add(), and irr::CProfileScope::CProfileScope().

◆ add() [2/2]

s32 irr::IProfiler::add ( const core::stringw name,
const core::stringw groupName 
)
inline

Add an automatically generated for the given name and group which can be used for profiling with start/stop.

After calling this once you can start/stop profiling with the returned id.

Parameters
nameName for displaying profile data.
groupNameEach id belongs into a group - this helps on displaying profile data.
Returns
Automatic id's start at INT_MAX and count down for each new id. If the name already has an id then that id will be returned.

Definition at line 329 of file IProfiler.h.

References add(), findDataIndex(), and ProfileDatas.

◆ addGroup()

u32 irr::IProfiler::addGroup ( const core::stringw name)
inlineprotected

Definition at line 377 of file IProfiler.h.

References ProfileGroups.

Referenced by add().

◆ findDataIndex()

bool irr::IProfiler::findDataIndex ( u32 result,
const core::stringw name 
) const
inline

Search for the index of the profile data by name.

Parameters
resultReceives the resulting data index when one was found.
nameString with name to search for
Returns
true when found, false when not found

Definition at line 386 of file IProfiler.h.

References ProfileDatas.

Referenced by add().

◆ findGroupIndex()

bool irr::IProfiler::findGroupIndex ( u32 result,
const core::stringw name 
) const
inline

Find the group index by the group-name.

Parameters
resultReceives the resulting group index when one was found.
nameString with name to search for
Returns
true when found, false when not found

Definition at line 409 of file IProfiler.h.

References ProfileGroups.

Referenced by add().

◆ getGroupCount()

u32 irr::IProfiler::getGroupCount ( ) const
inline

Get the number of profile groups. Will be at least 1.

NOTE: The first groups is always L"overview" which is an overview for all existing groups

Definition at line 152 of file IProfiler.h.

References ProfileGroups.

◆ getGroupData()

const SProfileData& irr::IProfiler::getGroupData ( u32  index) const
inline

Get profile data for a group.

NOTE: The first groups is always L"overview" which is an overview for all existing groups

Definition at line 159 of file IProfiler.h.

References ProfileGroups.

◆ getProfileDataById()

const SProfileData * irr::IProfiler::getProfileDataById ( u32  id)
inline

Get the profile data.

Parameters
idSame value as used in ::add
Returns
Profile data for the given id or 0 when it does not exist.

Definition at line 400 of file IProfiler.h.

References ProfileDatas.

◆ getProfileDataByIndex()

const SProfileData& irr::IProfiler::getProfileDataByIndex ( u32  index) const
inline

Get the profile data.

Parameters
indexA value between 0 and getProfileDataCount()-1. Indices can change when new id's are added.

Definition at line 140 of file IProfiler.h.

References ProfileDatas.

◆ getProfileDataCount()

u32 irr::IProfiler::getProfileDataCount ( ) const
inline

Return the number of profile data blocks. There is one for each id.

Definition at line 127 of file IProfiler.h.

References ProfileDatas.

◆ printAll()

virtual void irr::IProfiler::printAll ( core::stringw result,
bool  includeOverview = false,
bool  suppressUncalled = true 
) const
pure virtual

Write all profile-data into a string.

Parameters
resultReceives the result string.
includeOverviewWhen true a group-overview is attached first
suppressUncalledWhen true elements which got never called are not printed

◆ printGroup()

virtual void irr::IProfiler::printGroup ( core::stringw result,
u32  groupIndex,
bool  suppressUncalled 
) const
pure virtual

Write the profile data of one group into a string.

Parameters
resultReceives the result string.
groupIndex_

◆ resetAll()

void irr::IProfiler::resetAll ( )
inline

Reset all profile data.

NOTE: This is not deleting id's or groups, just resetting all timers to 0.

Definition at line 455 of file IProfiler.h.

References ProfileDatas, and ProfileGroups.

◆ resetDataById()

void irr::IProfiler::resetDataById ( s32  id)
inline

Reset profile data for the given id.

Definition at line 423 of file IProfiler.h.

References ProfileDatas, and resetDataByIndex().

◆ resetDataByIndex()

void irr::IProfiler::resetDataByIndex ( u32  index)
inline

Reset profile data for the given index.

Definition at line 432 of file IProfiler.h.

References ProfileDatas, and ProfileGroups.

Referenced by add(), and resetDataById().

◆ resetGroup()

void irr::IProfiler::resetGroup ( u32  index)
inline

Reset profile data for a whole group.

Definition at line 444 of file IProfiler.h.

References ProfileDatas, and ProfileGroups.

◆ start()

void irr::IProfiler::start ( s32  id)
inline

Start profile-timing for the given id.

This increases an internal run-counter for the given id. It will profile as long as that counter is > 0. NOTE: you have to add the id first with one of the ::add functions

Definition at line 281 of file IProfiler.h.

References irr::ITimer::getRealTime(), ProfileDatas, and Timer.

Referenced by irr::CProfileScope::CProfileScope().

◆ stop()

void irr::IProfiler::stop ( s32  id)
inline

Stop profile-timing for the given id.

This increases an internal run-counter for the given id. If it reaches 0 the time since start is recorded. You should have the same amount of start and stop calls. If stop is called more often than start then the additional stop calls will be ignored (counter never goes below 0)

Definition at line 292 of file IProfiler.h.

References irr::ITimer::getRealTime(), ProfileDatas, ProfileGroups, and Timer.

Referenced by irr::CProfileScope::~CProfileScope().

Member Data Documentation

◆ ProfileDatas

◆ ProfileGroups

core::array<SProfileData> irr::IProfiler::ProfileGroups
protected

◆ Timer

ITimer* irr::IProfiler::Timer
protected

Definition at line 214 of file IProfiler.h.

Referenced by start(), and stop().


The documentation for this class was generated from the following file: