UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
InGamePerformanceTracker.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "HAL/PlatformTime.h"
7
9{
11 {
12 Reset();
13 }
14
20
21 void Reset()
22 {
24 int32 NumSamples = FrameCycles.Num();
25 FrameCycles.Reset(NumSamples);
26 FrameCycles.SetNumZeroed(NumSamples);
27 TotalCycles = 0;
29 FrameIdx = 0;
30 }
31
34 //Cycles for each frame in history.
36
37 //Cached running total for an overall average.
41
42 //Index of next frame in history to replace.
44
47 {
49 }
50
52 {
53 return CachedAverageCycles.Load();
54 }
55
57 ENGINE_API void NextFrame();
58};
59
65{
66private:
67
69 FInGameCycleHistory History;
70
72 uint32 DirectSectionTime_EntryCount;
74 uint32 DirectSectionTime_BeginCycles;
75
76public:
77
80
81 ENGINE_API void Tick();
82
84 inline void AddCycles(uint32 Cycles)
85 {
86 return History.AddCycles(Cycles);
87 }
88
89 inline double GetAverageTimeSeconds() const
90 {
92 }
93
96
99
103};
104
106{
107private:
109 uint32 BeginCycles;
110
111public:
117
118 inline void Begin()
119 {
121 {
122 if (IsInGameThread())
123 {
124 Tracker->EnterTimedSection();//On the GT we use the tracker directly so we can allow re-entrance.
125 }
126 else
127 {
128 //On other threads we don't allow (or check for) re-entrance and store our own cycle data.
129 BeginCycles = FPlatformTime::Cycles();
130 }
131 }
132 }
133 inline void End()
134 {
136 {
137 if (IsInGameThread())
138 {
139 Tracker->ExitTimedSection();//On the GT we use the tracker directly so we can allow re-entrance.
140 }
141 else
142 {
143 //On other threads we don't allow (or check for) re-entrance and store our own cycle data.
144 uint32 Cycles = FPlatformTime::Cycles() - BeginCycles;
145 Tracker->AddCycles(Cycles);
146 BeginCycles = 0;
147 }
148 }
149 }
150};
151
152// In game performance trackers.
153// Not the most extensible system so should likely be improved in the future.
155{
157 //Others?
158 Num,
159};
160
162{
166 Num,
167};
168
175
176
#define check(expr)
Definition AssertionMacros.h:314
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
EInGamePerfTrackers
Definition InGamePerformanceTracker.h:155
EInGamePerfTrackerThreads
Definition InGamePerformanceTracker.h:162
CORE_API bool IsInGameThread()
Definition ThreadingBase.cpp:185
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition InGamePerformanceTracker.h:106
void End()
Definition InGamePerformanceTracker.h:133
void Begin()
Definition InGamePerformanceTracker.h:118
FInGameCycleCounter(FInGamePerformanceTracker *InTracker)
Definition InGamePerformanceTracker.h:112
Definition InGamePerformanceTracker.h:65
void AddCycles(uint32 Cycles)
Definition InGamePerformanceTracker.h:84
static ENGINE_API int32 CachedEnabled
Definition InGamePerformanceTracker.h:101
ENGINE_API void EnterTimedSection()
Definition InGamePerformanceTracker.cpp:58
static ENGINE_API class IConsoleVariable * Enabled
Definition InGamePerformanceTracker.h:100
static ENGINE_API class IConsoleVariable * HistorySize
Definition InGamePerformanceTracker.h:102
ENGINE_API void ExitTimedSection()
Definition InGamePerformanceTracker.cpp:67
ENGINE_API void Tick()
Definition InGamePerformanceTracker.cpp:46
double GetAverageTimeSeconds() const
Definition InGamePerformanceTracker.h:89
ENGINE_API FInGamePerformanceTracker()
Definition InGamePerformanceTracker.cpp:31
Definition InGamePerformanceTracker.h:170
~FInGameScopedCycleCounter()
Definition InGamePerformanceTracker.cpp:86
Definition InGamePerformanceTracker.h:179
~FWorldInGamePerformanceTrackers()
Definition InGamePerformanceTracker.cpp:99
FWorldInGamePerformanceTrackers()
Definition InGamePerformanceTracker.cpp:94
FInGamePerformanceTracker & GetInGamePerformanceTracker(EInGamePerfTrackers InTracker, EInGamePerfTrackerThreads InThread)
Definition InGamePerformanceTracker.h:187
Definition IConsoleManager.h:558
Definition Array.h:670
UE_REWRITE SizeType Num() const
Definition Array.h:1144
void SetNumZeroed(SizeType NewNum, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2340
void Reset(SizeType NewSize=0)
Definition Array.h:2246
Definition Atomic.h:538
Definition World.h:918
static uint32 Cycles()
Definition AndroidPlatformTime.h:27
static double ToSeconds64(const uint64 Cycles)
Definition GenericPlatformTime.h:208
Definition InGamePerformanceTracker.h:9
ENGINE_API void NextFrame()
Definition InGamePerformanceTracker.cpp:11
uint64 GetAverageCycles() const
Definition InGamePerformanceTracker.h:51
TAtomic< uint64 > CachedAverageCycles
Definition InGamePerformanceTracker.h:40
int32 FrameIdx
Definition InGamePerformanceTracker.h:43
void AddCycles(uint64 NewCycles)
Definition InGamePerformanceTracker.h:46
void Reset()
Definition InGamePerformanceTracker.h:21
uint64 TotalCycles
Definition InGamePerformanceTracker.h:38
TArray< uint64 > FrameCycles
Definition InGamePerformanceTracker.h:35
TAtomic< uint64 > CurrFrameCycles
Definition InGamePerformanceTracker.h:33
FInGameCycleHistory(int32 InNumSamples)
Definition InGamePerformanceTracker.h:15
FInGameCycleHistory()
Definition InGamePerformanceTracker.h:10