Class TCastleFrameProfiler

Unit

Declaration

type TCastleFrameProfiler = class(TObject)

Description

Profiler gathering statistics about each game frame. Useful to measure where you spend time during the game frame. In contrast to TCastleProfiler, this is not flexible to gather all possible data, or to keep all historic data. It is only specialized to gather some specific data, in each frame, to have statistics from the most recent frames.

You have to enable the statistics gathering by setting Enabled to True. That's it. In the log (see https://castle-engine.io/manual_log.php ) you will see a frame statistics, displayed after every 60 frames gathered.

Optionally, you can also report additional measurements during the frame. Do this by calling Start and Stop with String parameter, like this:

procedure TMyGameState.Update;
begin
  FrameProfiler.Start('MyTimeConsumingOperation');
  MyTimeConsumingOperation;
  FrameProfiler.Stop('MyTimeConsumingOperation');
end;

Use this class only through the singleton instance FrameProfiler.

The easiest way to enable this and view the data is through Castle Game Engine inspector. Just press F8 in a debug build to view it.

Hierarchy

Overview

Fields

Public nested const DefaultFramesForSummary = 60;

Methods

Public constructor Create;
Public procedure StartFrame;
Public procedure Start(const Metric: TFrameMetric); overload;
Public procedure Stop(const Metric: TFrameMetric); overload;
Public procedure Start(const UserMetric: String); overload;
Public procedure Stop(const UserMetric: String); overload;
Public function SummaryTotalFrameTime: TFloatTime;
Public function SummaryTime(const FrameMetric: TFrameMetric): TFloatTime; overload;
Public function SummaryTime(const UserMetric: String): TFloatTime; overload;

Properties

Public property Enabled: Boolean read FEnabled write SetEnabled;
Public property FramesForSummary: Cardinal read FFramesForSummary write FFramesForSummary default DefaultFramesForSummary;
Public property OnSummaryAvailable: TNotifyEvent read FOnSummaryAvailable write FOnSummaryAvailable;
Public property LogSummary: Boolean read FLogSummary write FLogSummary default false;

Description

Fields

Public nested const DefaultFramesForSummary = 60;
 

Methods

Public constructor Create;
 
Public procedure StartFrame;
 
Public procedure Start(const Metric: TFrameMetric); overload;
 
Public procedure Stop(const Metric: TFrameMetric); overload;
 
Public procedure Start(const UserMetric: String); overload;
 
Public procedure Stop(const UserMetric: String); overload;
 
Public function SummaryTotalFrameTime: TFloatTime;

Summary of times, use only from OnSummaryAvailable. SummaryTotalFrameTime is the total time we spent this frame. SummaryTime are times of particular things within this frame.

Public function SummaryTime(const FrameMetric: TFrameMetric): TFloatTime; overload;
 
Public function SummaryTime(const UserMetric: String): TFloatTime; overload;
 

Properties

Public property Enabled: Boolean read FEnabled write SetEnabled;

No data is gathered when Enabled = false, the calls to StartFrame, Start, Stop are ignored then.

Public property FramesForSummary: Cardinal read FFramesForSummary write FFramesForSummary default DefaultFramesForSummary;

Gather this many frames for a summary.

Public property OnSummaryAvailable: TNotifyEvent read FOnSummaryAvailable write FOnSummaryAvailable;

Notification when the summary is available, i.e. we have gathered FramesForSummary frames.

Public property LogSummary: Boolean read FLogSummary write FLogSummary default false;

When the summary is available, output details to log.


Generated by PasDoc 0.16.0.