OGRE  1.8
Object-Oriented Graphics Rendering Engine
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Ogre::Profiler Class Reference

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

#include <OgreProfiler.h>

+ Inheritance diagram for Ogre::Profiler:
+ Collaboration diagram for Ogre::Profiler:

Classes

struct  ProfileFrame
 Represents the total timing information of a profile since profiles can be called more than once each frame. More...
 
struct  ProfileHistory
 Represents a history of each profile during the duration of the app. More...
 
class  ProfileInstance
 Represents an individual profile call. More...
 

Public Types

enum  DisplayMode { DISPLAY_PERCENTAGE, DISPLAY_MILLISECONDS }
 

Public Member Functions

 Profiler ()
 
 ~Profiler ()
 
void beginGPUEvent (const String &event)
 Mark the beginning of a GPU event group. More...
 
void beginProfile (const String &profileName, uint32 groupID=(uint32) OGREPROF_USER_DEFAULT)
 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 endProfile (const String &profileName, uint32 groupID=(uint32) OGREPROF_USER_DEFAULT)
 Ends a profile. More...
 
DisplayMode getDisplayMode () const
 Get the display mode for the overlay. More...
 
bool getEnabled () const
 Gets whether this profiler is enabled. More...
 
Real getOverlayHeight () const
 
Real getOverlayLeft () const
 
Real getOverlayTop () const
 
Real getOverlayWidth () const
 
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...
 
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, void *)
 
void operator delete (void *ptr, const char *, int, const char *)
 
void operator delete[] (void *ptr)
 
void operator delete[] (void *ptr, const char *, int, const char *)
 
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 * operator new (size_t sz, void *ptr)
 placement operator new More...
 
void * operator new[] (size_t sz, const char *file, int line, const char *func)
 array operator new, with debug line info More...
 
void * operator new[] (size_t sz)
 
void reset ()
 Clears the profiler statistics. More...
 
void setDisplayMode (DisplayMode d)
 Set the display mode for the overlay. More...
 
void setEnabled (bool enabled)
 Sets whether this profiler is enabled. More...
 
void setOverlayDimensions (Real width, Real height)
 Set the size of the profiler overlay, in pixels. More...
 
void setOverlayPosition (Real left, Real top)
 Set the position of the profiler overlay, in pixels. 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...
 
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 (void)
 Override standard Singleton retrieval. More...
 
static ProfilergetSingletonPtr (void)
 Override standard Singleton retrieval. More...
 

Protected Types

typedef set< String >::type DisabledProfileMap
 
typedef list< OverlayElement * >
::type 
ProfileBarList
 
typedef
ProfileInstance::ProfileChildren 
ProfileChildren
 

Protected Member Functions

void changeEnableState ()
 Handles a change of the profiler's enabled state. More...
 
OverlayContainercreateContainer ()
 An internal function to create the container which will hold our display elements. More...
 
OverlayElementcreatePanel (const String &name, Real width, Real height, Real top, Real left, const String &materialName, bool show=true)
 An internal function to create a panel. More...
 
OverlayElementcreateTextArea (const String &name, Real width, Real height, Real top, Real left, uint fontSize, const String &caption, bool show=true)
 An internal function to create a text area. More...
 
void displayResults (void)
 
void displayResults (ProfileInstance *instance, ProfileBarList::iterator &bIter, Real &maxTimeMillisecs, Real &newGuiHeight, int &profileCount)
 Prints the profiling results of each frame. More...
 
void initialize ()
 Initializes the profiler's GUI elements. More...
 
void processFrameStats (void)
 Processes frame stats for all of the mRoot's children. More...
 
void processFrameStats (ProfileInstance *instance, Real &maxFrameTime)
 Processes specific ProfileInstance and it's children recursively. More...
 

Protected Attributes

Real mAverageFrameTime
 Rolling average of millisecs. More...
 
Real mBarHeight
 The height of each bar. More...
 
Real mBarIndent
 The size of the indent for each profile display bar. More...
 
Real mBarLineWidth
 The width of the min, avg, and max lines in a profile display. More...
 
Real mBarSpacing
 The distance between bars. More...
 
ProfileInstancemCurrent
 
uint mCurrentFrame
 The number of elapsed frame, used with mUpdateDisplayFrequency. More...
 
DisabledProfileMap mDisabledProfiles
 Holds the names of disabled profiles. More...
 
DisplayMode mDisplayMode
 How to display the overlay. More...
 
bool mEnabled
 Whether this profiler is enabled. More...
 
Real mGuiBorderWidth
 The width of the border between the profile window and each bar. More...
 
Real mGuiHeight
 The height of the stats window. More...
 
Real mGuiLeft
 The horz position of the stats window. More...
 
Real mGuiTop
 The vertical position of the stats window. More...
 
Real mGuiWidth
 The width of the stats window. More...
 
bool mInitialized
 Whether the GUI elements have been initialized. More...
 
ProfileInstancemLast
 
uint mMaxDisplayProfiles
 The max number of profiles we can display. More...
 
ulong mMaxTotalFrameTime
 The max frame time recorded. More...
 
bool mNewEnableState
 Keeps track of the new enabled/disabled state that the user has requested which will be applied after the frame ends. More...
 
OverlaymOverlay
 The overlay which contains our profiler results display. More...
 
ProfileBarList mProfileBars
 Holds the display bars for each profile results. More...
 
OverlayContainermProfileGui
 The window that displays the profiler results. More...
 
uint32 mProfileMask
 Mask to decide whether a type of profile is enabled or not. More...
 
bool mResetExtents
 
ProfileInstance mRoot
 
TimermTimer
 The timer used for profiling. More...
 
ulong mTotalFrameTime
 The total time each frame takes. More...
 
uint mUpdateDisplayFrequency
 The number of frames that must elapse before the current frame display is updated. More...
 

Static Protected Attributes

static ProfilermsSingleton
 

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)

Definition at line 134 of file OgreProfiler.h.

Member Typedef Documentation

typedef set<String>::type Ogre::Profiler::DisabledProfileMap
protected

Definition at line 457 of file OgreProfiler.h.

Definition at line 326 of file OgreProfiler.h.

Member Enumeration Documentation

Enumerator
DISPLAY_PERCENTAGE 

Display % frame usage on the overlay.

DISPLAY_MILLISECONDS 

Display milliseconds on the overlay.

Definition at line 252 of file OgreProfiler.h.

Constructor & Destructor Documentation

Ogre::Profiler::Profiler ( )
Ogre::Profiler::~Profiler ( )

Member Function Documentation

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.
void Ogre::Profiler::beginProfile ( const String profileName,
uint32  groupID = (uint32OGREPROF_USER_DEFAULT 
)

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
void Ogre::Profiler::changeEnableState ( )
protected

Handles a change of the profiler's enabled state.

OverlayContainer* Ogre::Profiler::createContainer ( )
protected

An internal function to create the container which will hold our display elements.

OverlayElement* Ogre::Profiler::createPanel ( const String name,
Real  width,
Real  height,
Real  top,
Real  left,
const String materialName,
bool  show = true 
)
protected

An internal function to create a panel.

OverlayElement* Ogre::Profiler::createTextArea ( const String name,
Real  width,
Real  height,
Real  top,
Real  left,
uint  fontSize,
const String caption,
bool  show = true 
)
protected

An internal function to create a text area.

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

Disables a profile.

Remarks
Can be safely called in the middle of the profile.
void Ogre::Profiler::displayResults ( void  )
protected
void Ogre::Profiler::displayResults ( ProfileInstance instance,
ProfileBarList::iterator &  bIter,
Real maxTimeMillisecs,
Real newGuiHeight,
int &  profileCount 
)
protected

Prints the profiling results of each frame.

Remarks
Recursive, for all the little children.
void Ogre::Profiler::enableProfile ( const String profileName)

Enables a previously disabled profile.

Remarks
Can be safely called in the middle of the profile.
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.
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
DisplayMode Ogre::Profiler::getDisplayMode ( ) const
inline

Get the display mode for the overlay.

Definition at line 265 of file OgreProfiler.h.

bool Ogre::Profiler::getEnabled ( ) const

Gets whether this profiler is enabled.

Real Ogre::Profiler::getOverlayHeight ( ) const
Real Ogre::Profiler::getOverlayLeft ( ) const
Real Ogre::Profiler::getOverlayTop ( ) const
Real Ogre::Profiler::getOverlayWidth ( ) const
uint32 Ogre::Profiler::getProfileGroupMask ( ) const
inline

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

Definition at line 219 of file OgreProfiler.h.

static Profiler& Ogre::Profiler::getSingleton ( void  )
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.
static Profiler* Ogre::Profiler::getSingletonPtr ( void  )
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.
Timer* Ogre::Profiler::getTimer ( )

Retrieves the timer for the profiler.

uint Ogre::Profiler::getUpdateDisplayFrequency ( ) const

Gets the frequency that the Profiler display is updated.

void Ogre::Profiler::initialize ( )
protected

Initializes the profiler's GUI elements.

void Ogre::Profiler::logResults ( )

Outputs current profile statistics to the log.

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

Mark a specific, ungrouped, GPU event.

Remarks
Can be safely called in the middle of the profile.
template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr)
inlineinherited

Definition at line 95 of file OgreMemoryAllocatedObject.h.

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

Definition at line 101 of file OgreMemoryAllocatedObject.h.

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

Definition at line 107 of file OgreMemoryAllocatedObject.h.

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

Definition at line 112 of file OgreMemoryAllocatedObject.h.

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

Definition at line 118 of file OgreMemoryAllocatedObject.h.

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

Definition at line 67 of file OgreMemoryAllocatedObject.h.

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

Definition at line 72 of file OgreMemoryAllocatedObject.h.

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

placement operator new

Definition at line 78 of file OgreMemoryAllocatedObject.h.

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

Definition at line 85 of file OgreMemoryAllocatedObject.h.

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

Definition at line 90 of file OgreMemoryAllocatedObject.h.

void Ogre::Profiler::processFrameStats ( void  )
protected

Processes frame stats for all of the mRoot's children.

void Ogre::Profiler::processFrameStats ( ProfileInstance instance,
Real maxFrameTime 
)
protected

Processes specific ProfileInstance and it's children recursively.

void Ogre::Profiler::reset ( )

Clears the profiler statistics.

void Ogre::Profiler::setDisplayMode ( DisplayMode  d)
inline

Set the display mode for the overlay.

Definition at line 262 of file OgreProfiler.h.

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
void Ogre::Profiler::setOverlayDimensions ( Real  width,
Real  height 
)

Set the size of the profiler overlay, in pixels.

void Ogre::Profiler::setOverlayPosition ( Real  left,
Real  top 
)

Set the position of the profiler overlay, in pixels.

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

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

Definition at line 216 of file OgreProfiler.h.

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

Sets the timer for the profiler.

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

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

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.
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.
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

friend class ProfileInstance
friend

Definition at line 324 of file OgreProfiler.h.

Member Data Documentation

Real Ogre::Profiler::mAverageFrameTime
protected

Rolling average of millisecs.

Definition at line 539 of file OgreProfiler.h.

Real Ogre::Profiler::mBarHeight
protected

The height of each bar.

Definition at line 483 of file OgreProfiler.h.

Real Ogre::Profiler::mBarIndent
protected

The size of the indent for each profile display bar.

Definition at line 498 of file OgreProfiler.h.

Real Ogre::Profiler::mBarLineWidth
protected

The width of the min, avg, and max lines in a profile display.

Definition at line 504 of file OgreProfiler.h.

Real Ogre::Profiler::mBarSpacing
protected

The distance between bars.

Definition at line 507 of file OgreProfiler.h.

ProfileInstance* Ogre::Profiler::mCurrent
protected

Definition at line 460 of file OgreProfiler.h.

uint Ogre::Profiler::mCurrentFrame
protected

The number of elapsed frame, used with mUpdateDisplayFrequency.

Definition at line 514 of file OgreProfiler.h.

DisabledProfileMap Ogre::Profiler::mDisabledProfiles
protected

Holds the names of disabled profiles.

Definition at line 465 of file OgreProfiler.h.

DisplayMode Ogre::Profiler::mDisplayMode
protected

How to display the overlay.

Definition at line 533 of file OgreProfiler.h.

bool Ogre::Profiler::mEnabled
protected

Whether this profiler is enabled.

Definition at line 523 of file OgreProfiler.h.

Real Ogre::Profiler::mGuiBorderWidth
protected

The width of the border between the profile window and each bar.

Definition at line 501 of file OgreProfiler.h.

Real Ogre::Profiler::mGuiHeight
protected

The height of the stats window.

Definition at line 486 of file OgreProfiler.h.

Real Ogre::Profiler::mGuiLeft
protected

The horz position of the stats window.

Definition at line 492 of file OgreProfiler.h.

Real Ogre::Profiler::mGuiTop
protected

The vertical position of the stats window.

Definition at line 495 of file OgreProfiler.h.

Real Ogre::Profiler::mGuiWidth
protected

The width of the stats window.

Definition at line 489 of file OgreProfiler.h.

bool Ogre::Profiler::mInitialized
protected

Whether the GUI elements have been initialized.

Definition at line 471 of file OgreProfiler.h.

ProfileInstance* Ogre::Profiler::mLast
protected

Definition at line 461 of file OgreProfiler.h.

uint Ogre::Profiler::mMaxDisplayProfiles
protected

The max number of profiles we can display.

Definition at line 474 of file OgreProfiler.h.

ulong Ogre::Profiler::mMaxTotalFrameTime
protected

The max frame time recorded.

Definition at line 536 of file OgreProfiler.h.

bool Ogre::Profiler::mNewEnableState
protected

Keeps track of the new enabled/disabled state that the user has requested which will be applied after the frame ends.

Definition at line 527 of file OgreProfiler.h.

Overlay* Ogre::Profiler::mOverlay
protected

The overlay which contains our profiler results display.

Definition at line 477 of file OgreProfiler.h.

ProfileBarList Ogre::Profiler::mProfileBars
protected

Holds the display bars for each profile results.

Definition at line 468 of file OgreProfiler.h.

OverlayContainer* Ogre::Profiler::mProfileGui
protected

The window that displays the profiler results.

Definition at line 480 of file OgreProfiler.h.

uint32 Ogre::Profiler::mProfileMask
protected

Mask to decide whether a type of profile is enabled or not.

Definition at line 530 of file OgreProfiler.h.

bool Ogre::Profiler::mResetExtents
protected

Definition at line 540 of file OgreProfiler.h.

ProfileInstance Ogre::Profiler::mRoot
protected

Definition at line 462 of file OgreProfiler.h.

Profiler * Ogre::Singleton< Profiler >::msSingleton
staticprotectedinherited

Definition at line 75 of file OgreSingleton.h.

Timer* Ogre::Profiler::mTimer
protected

The timer used for profiling.

Definition at line 517 of file OgreProfiler.h.

ulong Ogre::Profiler::mTotalFrameTime
protected

The total time each frame takes.

Definition at line 520 of file OgreProfiler.h.

uint Ogre::Profiler::mUpdateDisplayFrequency
protected

The number of frames that must elapse before the current frame display is updated.

Definition at line 511 of file OgreProfiler.h.


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