OGRE-Next  2.3
Object-Oriented Graphics Rendering Engine
Ogre::Profiler Class Reference

The profiler allows you to measure the performance of your code. More...

#include <OgreProfiler.h>

+ Inheritance diagram for Ogre::Profiler:

Public Member Functions

 Profiler ()
 
 ~Profiler ()
 
void addListener (ProfileSessionListener *listener)
 
void beginGPUEvent (const String &event)
 Mark the beginning of a GPU event group. More...
 
void beginGPUSample (const String &name, uint32 *hashCache)
 
void beginProfile (const String &profileName, uint32 groupID=(uint32) OGREPROF_USER_DEFAULT, ProfileSampleFlags::ProfileSampleFlags flags=ProfileSampleFlags::FlagsNone)
 Begins a profile. More...
 
void disableProfile (const String &profileName)
 Disables a profile. More...
 
void enableProfile (const String &profileName)
 Enables a previously disabled profile. More...
 
void endGPUEvent (const String &event)
 Mark the end of a GPU event group. More...
 
void endGPUSample (const String &name)
 
void endProfile (const String &profileName, uint32 groupID=(uint32) OGREPROF_USER_DEFAULT)
 Ends a profile. More...
 
bool getEnabled () const
 Gets whether this profiler is enabled. More...
 
uint32 getProfileGroupMask () const
 Get the mask which all profiles must pass to be enabled. More...
 
TimergetTimer ()
 Retrieves the timer for the profiler. More...
 
uint getUpdateDisplayFrequency () const
 Gets the frequency that the Profiler display is updated. More...
 
bool getUseStableMarkers () const
 
void logResults ()
 Outputs current profile statistics to the log. More...
 
void markGPUEvent (const String &event)
 Mark a specific, ungrouped, GPU event. More...
 
void operator delete (void *ptr)
 
void operator delete (void *ptr, const char *, int, const char *)
 
void operator delete (void *ptr, void *)
 
void operator delete[] (void *ptr)
 
void operator delete[] (void *ptr, const char *, int, const char *)
 
void * operator new (size_t sz)
 
void * operator new (size_t sz, const char *file, int line, const char *func)
 operator new, with debug line info More...
 
void * operator new (size_t sz, void *ptr)
 placement operator new More...
 
void * operator new[] (size_t sz)
 
void * operator new[] (size_t sz, const char *file, int line, const char *func)
 array operator new, with debug line info More...
 
void removeListener (ProfileSessionListener *listener)
 
void reset (bool deleteAll)
 Clears the profiler statistics. More...
 
void setEnabled (bool enabled)
 Sets whether this profiler is enabled. More...
 
void setProfileGroupMask (uint32 mask)
 Set the mask which all profiles must pass to be enabled. More...
 
void setTimer (Timer *t)
 Sets the timer for the profiler. More...
 
void setUpdateDisplayFrequency (uint freq)
 Sets the Profiler so the display of results are updated every n frames. More...
 
void setUseStableMarkers (bool useStableMarkers)
 Sets whether each frame should be tagged with the frame number (starting from 0). More...
 
bool watchForLimit (const String &profileName, Real limit, bool greaterThan=true)
 Returns true if the specified profile goes over or under the given limit frame time. More...
 
bool watchForMax (const String &profileName)
 Returns true if the specified profile reaches a new frame time maximum. More...
 
bool watchForMin (const String &profileName)
 Returns true if the specified profile reaches a new frame time minimum. More...
 

Static Public Member Functions

static ProfilergetSingleton ()
 Override standard Singleton retrieval. More...
 
static ProfilergetSingletonPtr ()
 Override standard Singleton retrieval. More...
 

Friends

class ProfileInstance
 

Detailed Description

The profiler allows you to measure the performance of your code.

Remarks
Do not create profiles directly from this unless you want a profile to last outside of its scope (i.e. the main game loop). For most cases, use the macro OgreProfile(name) and braces to limit the scope. You must enable the Profile before you can used it with setEnabled(true). If you want to disable profiling in Ogre, simply set the macro OGRE_PROFILING to 0.
Author
Amit Mathew (amitmathew (at) yahoo (dot) com)

Constructor & Destructor Documentation

◆ Profiler()

Ogre::Profiler::Profiler ( )

◆ ~Profiler()

Ogre::Profiler::~Profiler ( )

Member Function Documentation

◆ addListener()

void Ogre::Profiler::addListener ( ProfileSessionListener listener)
Remarks
Register a ProfileSessionListener from the Profiler
Parameters
listenerA valid listener derived class

◆ beginGPUEvent()

void Ogre::Profiler::beginGPUEvent ( const String event)

Mark the beginning of a GPU event group.

Remarks
Can be safely called in the middle of the profile.

◆ beginGPUSample()

void Ogre::Profiler::beginGPUSample ( const String name,
uint32 hashCache 
)

◆ beginProfile()

void Ogre::Profiler::beginProfile ( const String profileName,
uint32  groupID = (uint32OGREPROF_USER_DEFAULT,
ProfileSampleFlags::ProfileSampleFlags  flags = ProfileSampleFlags::FlagsNone 
)

Begins a profile.

Remarks
Use the macro OgreProfileBegin(name) instead of calling this directly so that profiling can be ignored in the release version of your app.
You only use the macro (or this) if you want a profile to last outside of its scope (i.e. the main game loop). If you use this function, make sure you use a corresponding OgreProfileEnd(name). Usually you would use the macro OgreProfile(name). This function will be ignored for a profile that has been disabled or if the profiler is disabled.
Parameters
profileNameMust be unique and must not be an empty string
groupIDA profile group identifier, which can allow you to mask profiles

◆ disableProfile()

void Ogre::Profiler::disableProfile ( const String profileName)

Disables a profile.

Remarks
Can be safely called in the middle of the profile.

◆ enableProfile()

void Ogre::Profiler::enableProfile ( const String profileName)

Enables a previously disabled profile.

Remarks
Can be safely called in the middle of the profile.

◆ endGPUEvent()

void Ogre::Profiler::endGPUEvent ( const String event)

Mark the end of a GPU event group.

Remarks
Can be safely called in the middle of the profile.

◆ endGPUSample()

void Ogre::Profiler::endGPUSample ( const String name)

◆ endProfile()

void Ogre::Profiler::endProfile ( const String profileName,
uint32  groupID = (uint32OGREPROF_USER_DEFAULT 
)

Ends a profile.

Remarks
Use the macro OgreProfileEnd(name) instead of calling this directly so that profiling can be ignored in the release version of your app.
This function is usually not called directly unless you want a profile to last outside of its scope. In most cases, using the macro OgreProfile(name) which will call this function automatically when it goes out of scope. Make sure the name of this profile matches its corresponding beginProfile name. This function will be ignored for a profile that has been disabled or if the profiler is disabled.
Parameters
profileNameMust be unique and must not be an empty string
groupIDA profile group identifier, which can allow you to mask profiles

◆ getEnabled()

bool Ogre::Profiler::getEnabled ( ) const

Gets whether this profiler is enabled.

◆ getProfileGroupMask()

uint32 Ogre::Profiler::getProfileGroupMask ( ) const
inline

Get the mask which all profiles must pass to be enabled.

◆ getSingleton()

static Profiler& Ogre::Profiler::getSingleton ( )
static

Override standard Singleton retrieval.

Remarks
Why do we do this? Well, it's because the Singleton implementation is in a .h file, which means it gets compiled into anybody who includes it. This is needed for the Singleton template to work, but we actually only want it compiled into the implementation of the class based on the Singleton, not all of them. If we don't change this, we get link errors when trying to use the Singleton-based class from an outside dll.
This method just delegates to the template version anyway, but the implementation stays in this single compilation unit, preventing link errors.

◆ getSingletonPtr()

static Profiler* Ogre::Profiler::getSingletonPtr ( )
static

Override standard Singleton retrieval.

Remarks
Why do we do this? Well, it's because the Singleton implementation is in a .h file, which means it gets compiled into anybody who includes it. This is needed for the Singleton template to work, but we actually only want it compiled into the implementation of the class based on the Singleton, not all of them. If we don't change this, we get link errors when trying to use the Singleton-based class from an outside dll.
This method just delegates to the template version anyway, but the implementation stays in this single compilation unit, preventing link errors.

◆ getTimer()

Timer* Ogre::Profiler::getTimer ( )

Retrieves the timer for the profiler.

◆ getUpdateDisplayFrequency()

uint Ogre::Profiler::getUpdateDisplayFrequency ( ) const

Gets the frequency that the Profiler display is updated.

◆ getUseStableMarkers()

bool Ogre::Profiler::getUseStableMarkers ( ) const

◆ logResults()

void Ogre::Profiler::logResults ( )

Outputs current profile statistics to the log.

◆ markGPUEvent()

void Ogre::Profiler::markGPUEvent ( const String event)

Mark a specific, ungrouped, GPU event.

Remarks
Can be safely called in the middle of the profile.

◆ operator delete() [1/3]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr)
inlineinherited

◆ operator delete() [2/3]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr,
const char *  ,
int  ,
const char *   
)
inlineinherited

◆ operator delete() [3/3]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr,
void *   
)
inlineinherited

◆ operator delete[]() [1/2]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void *  ptr)
inlineinherited

◆ operator delete[]() [2/2]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void *  ptr,
const char *  ,
int  ,
const char *   
)
inlineinherited

◆ operator new() [1/3]

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz)
inlineinherited

◆ operator new() [2/3]

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
const char *  file,
int  line,
const char *  func 
)
inlineinherited

operator new, with debug line info

◆ operator new() [3/3]

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
void *  ptr 
)
inlineinherited

placement operator new

◆ operator new[]() [1/2]

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz)
inlineinherited

◆ operator new[]() [2/2]

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz,
const char *  file,
int  line,
const char *  func 
)
inlineinherited

array operator new, with debug line info

◆ removeListener()

void Ogre::Profiler::removeListener ( ProfileSessionListener listener)
Remarks
Unregister a ProfileSessionListener from the Profiler
Parameters
listenerA valid listener derived class

◆ reset()

void Ogre::Profiler::reset ( bool  deleteAll)

Clears the profiler statistics.

◆ setEnabled()

void Ogre::Profiler::setEnabled ( bool  enabled)

Sets whether this profiler is enabled.

Only takes effect after the the frame has ended.

Remarks
When this is called the first time with the parameter true, it initializes the GUI for the Profiler

◆ setProfileGroupMask()

void Ogre::Profiler::setProfileGroupMask ( uint32  mask)
inline

Set the mask which all profiles must pass to be enabled.

◆ setTimer()

void Ogre::Profiler::setTimer ( Timer t)

Sets the timer for the profiler.

◆ setUpdateDisplayFrequency()

void Ogre::Profiler::setUpdateDisplayFrequency ( uint  freq)

Sets the Profiler so the display of results are updated every n frames.

◆ setUseStableMarkers()

void Ogre::Profiler::setUseStableMarkers ( bool  useStableMarkers)

Sets whether each frame should be tagged with the frame number (starting from 0).

This is very useful for tagging and identifying CPU samples with GPU ones, but it causes Remotery to shift colours like a rainbow. Setting this to true forces each frame to not have the frame number embedded in it, which stabilizes the colour. Default is false.

Remarks
Relevant only when using Remotery.

◆ watchForLimit()

bool Ogre::Profiler::watchForLimit ( const String profileName,
Real  limit,
bool  greaterThan = true 
)

Returns true if the specified profile goes over or under the given limit frame time.

Remarks
If this is called during a frame, it will be reading the results from the previous frame. Therefore, it is best to use this after the frame has ended.
Parameters
limitA number between 0 and 1 representing the percentage of frame time
greaterThanIf true, this will return whether the limit is exceeded. Otherwise, it will return if the frame time has gone under this limit.

◆ watchForMax()

bool Ogre::Profiler::watchForMax ( const String profileName)

Returns true if the specified profile reaches a new frame time maximum.

Remarks
If this is called during a frame, it will be reading the results from the previous frame. Therefore, it is best to use this after the frame has ended.

◆ watchForMin()

bool Ogre::Profiler::watchForMin ( const String profileName)

Returns true if the specified profile reaches a new frame time minimum.

Remarks
If this is called during a frame, it will be reading the results from the previous frame. Therefore, it is best to use this after the frame has ended.

Friends And Related Function Documentation

◆ ProfileInstance

friend class ProfileInstance
friend

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